我很困惑——需要帮助。我有一个带有抽象方法的抽象类:
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)。谁能向我解释为什么编译器不接受对我的列表进行迭代?
我真的很感谢你的帮助。
最好的问候,丹尼尔