gpt4 book ai didi

java - 动态转换为对象 ArrayList 中未知的类

转载 作者:行者123 更新时间:2023-12-01 11:36:29 27 4
gpt4 key购买 nike

我有一个 Object 类型的 ArrayList,其中包含 6 个不同类的对象:

questions = new ArrayList<>();
questions.add(new Question1());
questions.add(new Question2());
questions.add(new Question3());
questions.add(new Question4());
questions.add(new Question5());

根据 QuestionNum 变量,我必须获取对象的方法,即从 ArrayList 中获取 isAnswered()。

我想要的示例:

for (int i = 0; i < 5; i++)
{
questionNum = i;
if ((Question<questionNum>)questions.get(questionNum).isAnswered())
{
Log.d("Answered", String.valueOf(questionNum));
}
}

我现在使用的是:

else if (questionNum == 4 &&
((Question5)questions.get(questionNum)).isAnswered())

有什么方法可以让它更优雅,还是应该使用接口(interface)或继承(做Android项目,所以每个问题类都已经继承了Fragment)?

最佳答案

您可以让每个 Question 类实现 interface :

public interface Question{
public boolean isAnswered();
}

public class Question1 implements Question{
public boolean isAnswered(){
//implementation
}
//other code
}

然后将这些作为问题添加到列表中

List<Question> questions = new ArrayList<Question>();
questions.add(new Question1());

然后您可以从列表中获取问题并调用适当的方法:

if ( questions.get(0).isAnswered() ){

}

关于java - 动态转换为对象 ArrayList 中未知的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29930581/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com