
1 RiceMarch 2021 年 6 月 4 日 via iPhone 1 就是上转型,将父类的引用指向子类的实例 或者将子类对象赋值给父类引用 |
2 secondwtq 2021 年 6 月 4 日 搜 Java array covariant |
3 sutra 2021 年 6 月 4 日 package java.lang; /** * Thrown to indicate that an attempt has been made to store the * wrong type of object into an array of objects. For example, the * following code generates an {@code ArrayStoreException}: * <blockquote><pre> * Object x[] = new String[3]; * x[0] = new Integer(0); * </pre></blockquote> * * @since 1.0 */ public class ArrayStoreException extends RuntimeException { |
4 cpstar 2021 年 6 月 4 日 a[0]和 a[1]都是 A 类型,实际指针指向的存储,一个 A 实例一个 B 实例。 调用的时候 a[0]/a[1]都无法调用 B 的扩展方法,如果 B 实现了 A 的 override 方法,则实现多态,调用 a[1]的时候,调用的是 B 的方法,a[0]则是 A 的方法。 然后可以 B b=(B)a[1],而如果 B b=(B)a[0]则抛 ClassCastException |
5 cpstar 2021 年 6 月 4 日 A[] a,申明了 a 是 A 类型的数组 A[] a=new B[2],则是创建了两个 B 实例,并且将引用给 a[] 然后 a[0]=new A(),则又创建了一个 A 实例,并将引用给 a[0]。 所以此时 a[]保有这两个引用,一个指向 A 实例,一个指向 B 实例。 |
6 huang119412 2021 年 6 月 4 日 Java 数组的缺陷。Java 数组是协变的. 这样设计是因为早期没有泛型的时候充当泛型。当然数组还有无任何 final,volatile 语义等缺陷。 |
7 sakura1 2021 年 6 月 4 日 这是泛型里的协变和逆变的概念,就是 |
8 sakura1 2021 年 6 月 4 日 A extends B |
9 sakura1 2021 年 6 月 4 日 ...换行失败,打扰了 |
12 Not404 OP @huang119412 嗯 通过协变又去了解了其他几个概念。谢谢啦 |