硬核干货:Java如何处理别名?( 三 )

System.out.println(\"override method in Child\");

publicvoidmethodChild(){

System.out.println(\"method in Child\");

publicclassMain{

publicstaticvoidmain(String[
args){

B[
b=newB[10
;

A[
a=b;

a[0
=newA();

b[0
.methodParent();

但是 , 如果运行代码 , 输出将是:线程“主”中的异常java.lang.ArrayStoreException:aliasingtest.A

在aliasingtest.Main.main(Main.java:26)

原因是Java在运行时处理别名 。 在运行时 , 它知道第一个元素应该是B对象 , 而不是A 。

推荐阅读