0

我很困惑——需要帮助。我有一个带有抽象方法的抽象类:

public abstract class AbstractA<T extends SomeOtherClass> {

    public abstract List<String> getAll();

}

当我声明一个 AbstractA 类型的方法参数并调用 getAll() 时,IDE 会显示正确的返回类型 ( List<String>)。

...

public void test(AbstractA abstractA) {
    abstractA.getAll(); // <- returns List<String>
}

...

但是当我想遍历该列表时,每个元素的类型都是 Object 而不是 String:

...

public void test(AbstractA abstractA) {
    for(String element : abstractA.getAll()) {  // <- compile error: 
     // error: incompatible types: Object cannot be converted to String
    }
}

...

它变得更好:

...

public void test(AbstractA abstractA) {
    List<String> myElements = abstractA.getAll();
    for(String element : myElements) { // <- this is correct!
    }
}

...

我不知道这里发生了什么。我正在使用 Java 8(更新 25)。谁能向我解释为什么编译器不接受对我的列表进行迭代?

我真的很感谢你的帮助。

最好的问候,丹尼尔

4

0 回答 0