我有一个抽象类Question
,还有一堆子类:EssayQuestion
,TrueFalseQuestion
,依此类推。他们每个人都有自己的(有时是唯一的)变量和方法。调查是不同类型问题的组合,因此要创建和保存它,我使用Vector<Question>
。
当我尝试“解压缩”这样的向量时,麻烦就开始了,每个项目都被简单地视为Question
的一个实例,并且不允许我使用每个子类具有的方法。
例如,我创建一个真/假问题并将其添加到我的载体
TFQuestion first = new TFQuestion("some text");
Vector<Question> v = new Vector<Question>();
v.add(0, first);
说,TFQuestion
有getPrompt()
方法,但抽象类Question
没有。
v.get(0).getPrompt()
不存在。但是v.get(0).getClass()
会返回TFQuestion
的实例。