首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

奇怪了!罕见的数据类型转换的有关问题

2012-03-02 
奇怪了!罕见的数据类型转换的问题ListNode modelList (ListNode)ListIModel其中Node是IModel的子

奇怪了!罕见的数据类型转换的问题
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 没有任何继承关系~
[解决办法]
反之是必须强制转换的
[解决办法]

探讨

反之是必须强制转换的

[解决办法]
Java code
List<Node> modelList=new ArrayList<Node>();List<IModel> imodel=new ArrayList<IModel>();
[解决办法]
应用。
[解决办法]
探讨

复习一下泛型吧,List<Node>和List<IModel>是 List的子类,但是List<Node>和List<IModel>是没有继承关系的。

[解决办法]
你这个也没有心要强转,只要父类中有子类方法的声明,就可以直接用的。多态吗

[解决办法]
探讨
List<Node> modelList = (List<Node>)List<IModel>;
其中Node是IModel的子类,为什么IModel的集合不能强转为Node的集合呀,请各位大侠帮忙。

[解决办法]
你可以用List<? extends IModel> 或者 List<? super Node>但你要明确你的目的是什么
[解决办法]
父子关系没搞清楚
[解决办法]
Java code
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{    } 

热点排行