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

来源:互联网 发布:js图片自动轮播 编辑:程序博客网 时间:2024/06/10 05:11


今天在看书的时候看到了数组协变性,第一次看到,记录下!

首先是概念  协变性(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,爱生活!


0 0
原创粉丝点击