这部分视频我今天也才刚看。
你可能理解错了(还是可能是我没理解你表达的问题!),他不是想说明字节码、父类之类的东西。
他是要说明Object类型的引用在接收数组时的一些特别细致的问题。
1首先(Object类型的引用可以接收除“基本数据类型”外的所有类型)。
2其次(基本数据类型的数组(int[] a1)Object的引用也可以接收)。
int[] a1=new int[3]; Object aObj1=a1;
//a1是一个基本数据类型数组的引用,根据“2其次”,所以(Object aObj1=a1)没问题。
String[] a4=new String[3]; Object aObj2=a4;
//a4是一个String类型的数组,根据(1首先),Object aObj2=a4;也没问题。
重点:
int[][] a3=new int[3][5]; Object[] aObj3=a3;
//aObj3是一个Object的数组引用,也就是aObj3必须接收的是一个数组。
//a3是一个二维数组,(可以把a3看成一个一维数组,数组内存的每个元素是数组)。
//那么aObj3是数组a3也是数组,这点符合
//但注意aObj3内只能接收Object的元素,而a3内的元素是数组符合(2其次)所以Object[] aObj3=a3;没问题。
突然发现一个最重点的问题你没写。。。(就是视频中那个错误的)如:
int[] a1=new int[3]; Object[] aObj5=a1;
//aObj5是一个Object的数组引用,也就是aObj5必须接收的是一个数组。
//a1是一个数组引用,但这个数组内的元素类型是int型是基本数组类型,根据(1首先)Object[] aObj5=a1;是错误的。
//因为aObj5表示的是,我是个Object数组类型,1我是数组,2我数组内的元素类型是Object
//a1是个数组但,里面元素是int型,Object不能接收。
|