奇怪了!罕见的数据类型转换的问题
List<Node> modelList = (List<Node>)List<IModel>;
其中Node是IModel的子类,为什么IModel的集合不能强转为Node的集合呀,请各位大侠帮忙。
[解决办法]
都说Node是IModel的子类,怎么能子类的引用指向父类的对象。。。
[解决办法]
复习一下泛型吧,List<Node>和List<IModel>是 List的子类,但是List<Node>和List<IModel>是没有继承关系的。
[解决办法]
子类型对象可以放在父类型引用,反之不可以
[解决办法]
楼主怎么想我猜到了一点
Node是IModel 的子类 我举个例子
Node node =new Node()
IModel imodel=(IModel )node;
这样是可以的~~
但是List<Node> list1 和 List<IModel>list2 之间是转换不了的因为 list1 和 list2 没有任何继承关系~
[解决办法]
反之是必须强制转换的
[解决办法]
List<Node> modelList=new ArrayList<Node>();List<IModel> imodel=new ArrayList<IModel>();
[解决办法]
应用。
[解决办法]
package generics;import java.util.ArrayList;import java.util.List;public class Generics extends GG{ int k; public Generics(int k) { // TODO Auto-generated constructor stub this.k = k; } public static List<? extends GG> listCopy(List<GG> src){ return src; } @SuppressWarnings({ "unchecked" }) public static void main(String[] args) { List<GG> list = new ArrayList<GG>(); list.add(new Generics(1)); list.add(new Generics(2)); list.add(new Generics(3)); List<Generics> ll = (List<Generics>) listCopy(list); System.out.println(ll); List<Generics> lll = (List<Generics>)(List<? extends GG>)list; System.out.println(lll); } public String toString(){ return k+""; }}class GG{ }