您的位置:首页 > 其它

第25条 泛型——列表优先于数组

2016-05-05 14:08 267 查看
        数组与泛型相比有两个重要的不同点。

        首先,数组是协变的。相反泛型则是不可变的。

//这是被允许的
Object[] objectArray = new Long[1];
objectArray[0] = "hello world";//Throws java.lang.ArrayStoreException

//Won't compile! 不被允许:Type mismatch: cannot convert from LinkedList<Long> to List<Object>
List<Object> list = new LinkedList<Long>();
        其次,数组是具体化的(reified)。因此数组会在运行时才知道并检查他们的元素类型约束。泛型是通过擦除来实现的。因此泛型只在编译时强化他们的类型信息,并在运行时丢弃(或者擦除)他们元素的类型信息。

        创建泛型数组是非法的:

//Cannot create a generic array ofList<String>
List<String>[] stringLists = newList<String>[1];
        一般来说,数组和泛型不能很好的混合使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: