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


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

首先是概念  协变性(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 list = new ArrayList(); 
  

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

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

记录点点滴滴,爱Java,爱生活!


你可能感兴趣的:(Java)