我有一堂课
public abstract class superObject{}
和子类
public class subObj1 extends superObject{}
public class subObj2 extends superObject{}
在我的主班我有
List<superObject> aList = new ArrayList<>();
其中将允许我调用
aList.add(subObj1)
但我不能调用
aList.get(0)
因为Array列表中不是superObject类型的任何对象,编译器说我正在尝试返回不兼容的类型。
我完全不知道为什么?
编辑:示例代码不正确
最佳答案
当您从列表中返回一个对象时,它将被视为一个超对象,如果您想将其用作subObj1或任何其他子类,则必须对其进行转换:
subObj1 sub = (subObj1) aList.get (0);