通过ArrayList从特定类访问变量

我有一个名为的类Questions,它有两个子类multipleChoiceFillInBlank. 这两个子类每个都有唯一的实例变量。

现在假设我有一个ArrayList <Questions> questions存储两种类型的问题(multipleChoiceFillInBlank)。

我的问题是:当我遍历问题 ArrayList 时,如何访问multipleChoice类和FillInBlank类中的特定实例变量?我遇到了麻烦,因为数组列表的类型是类型问题。

回答

正如评论中提到的,instanceof应该用来标识当前元素是哪个子类,然后这个元素应该被强制转换为这个子类:

for (Questions question : questions) {
    if (question instanceof MultipleChoice) {
        doSomething((MultipleChoice) question);
    } else if (question instanceof FillInBlank) {
        doSomething((FillInBlank) question);
    } else {
        System.out.println("Unexpected class: " + question.getClass());
    }
}

// ...
private void doSomething(MultipleChoice mc) {
    // do something
    System.out.println(mc.getChoice());
}

private void doSomething(FillInBlank fib) {
    // do something
    System.out.println(fib.getFilledAnswer());
}


以上是通过ArrayList从特定类访问变量的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>