java从List 转换为List ,其中B扩展A
这可能吗? 如果没有,为什么这不可能在Java?
interface B extends A {} public List getList(); List = getList(); // Type mismatch: cannot convert from List to List
我认为我正在寻找的主题是“协变类型”,就像这里和这里一样 ,但是它很模糊,并没有解决我的问题。
这是一个直观的例子,说明这会如何使事情变得严重错误:
interface B extends A {} List blist=new List(); List alist=blist; alist.add(new A()); //should be ok, right? B b = blist.get(0); //fail: even though blist is a List, it now has an A in it
尝试
List extends A> = getList()
你不能这样做的原因是A和B不一样,你指定getList返回一个B的List(不是超类或子类)