您的位置:首页 > 编程语言 > Java开发

Java基本学习:数组--协变性

2016-06-13 10:22 288 查看
今天在看书的时候看到了数组协变性,第一次看到,记录下!

首先是概念  协变性(covariant) :如果类Base是类Sub的父类,那么Base[]就是Sbu[]的父类

Object[] ob = new String[10];
ob[5] = 10;
上面代码运行时是会报错:

Exception in thread "main" java.lang.ArrayStoreException: java.lang.Integer

通过资料 了解到Java设计之初,人们想给它做泛型,但是没时间做,所以把数组设计成协变了,这样也导致了无穷的后患。

作对比而言,我们还需要了解泛型是不可变的(invariant)

// List<Object> list = new ArrayList<String>();

上面代码编译时就会报错!!

这些表现说明了Java中数组是具体化(reified),而泛型在运行时是被擦除的(erasure)

记录点点滴滴,爱Java,爱生活!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: