java如何用相似但不同的对象填充列表?
我有两个类,比如“QuestionOne”和“QuestionsTwo”,它们非常相似,并且继承自基类“Question”。现在我想写一个方法,用任意一个类的对象填充ArrayList
public ArrayList<QuestionOne> list = new ArrayList<QuestionOne>();
public void fill(QuestionOne questionOne){
list.add(questionOne);
}
这将是一种填充QuestionOne对象的方法。但我希望该方法能够用“QuestionOne”和“QuestionTwo”两种类型的对象填充列表
我想补充的是。。。我想使用“问题一”和“问题二”的所有方法
我怎样才能做到这一点?我需要一个接口吗?我不知道
# 1 楼答案
如果使用抽象类
Question
,则可以使用Question
的arraylist来存储这两个子类对象要进行回溯,可以使用
instanceof
来比较:# 2 楼答案
现在
list.add(x)
将在x
是Question
或Question
子类的任何对象时工作通常,每当您说变量或参数的类型为}例程的参数,该例程如下所示:
C
时,它都可以包含对C
或C
的任何子类的引用。这同样适用于ArrayList
{因此,您可以将属于
Question
子类的任何内容添加到列表中p.S.:一些评论建议也更改
fill
的参数。你可以这么做,但你不必这么做。这取决于你的要求。这仍然有效:因为
questionOne
是一个Question
(也是一个QuestionOne
)。如果确实需要,可以重载fill
:通常,最好通过向
Question
添加多态方法来执行类似操作,该方法在QuestionOne
和QuestionTwo
中被重写。但这并不总是可能的。我只是想指出,fill
的参数实际上不需要更改,尽管您可能想更改# 3 楼答案
如前所述,您可以创建Question类型的ArrayList。这意味着您将只能使用问题类中定义的方法
比如说
_
_
_
# 4 楼答案
做一个
ArrayList<Question>
并按这种方式填充。虽然您只有可用的接口,但问题类会公开该接口