我有一个 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/