黑马程序员_Java高新技术之反射 数组的反射

来源:互联网 发布:数据库 上次修改时间 编辑:程序博客网 时间:2024/05/22 16:06
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------

 

 

l具有相同维数和元素类型的数组属于同一个类型,即具有相同的Class实例对象。

l代表数组的Class实例对象的getSuperClass()方法返回的父类为Object类对应的Class
l基本类型的一维数组可以被当作Object类型使用,不能当作Object[]类型使用;非基本类型的一维数组,既可以当做Object类型使用,又可以当做Object[]类型使用。
lArrays.asList()方法处理int[]String[]时的差异。
lArray工具类用于完成对数组的反射操作。
 
 

Object[] String[]没有父子关系,ObjectString有父子关系,所以newObject[]{aaa,bb}不能强制转换成newString[]{aaa,bb};,Objectx = abc能强制转换成Stringx =abc

main.invoke(null,(Object)(newObject[]{aaa,xxx}));不能调用publicstaticvoidmain(String [] args)

1.

Class类帮助文档开始部分的介绍。

String[] a1 = new String[8];

String[] a2 = new String[9];

String[][] a3 = new String[6][4];

  ().getName());

System.out.println(a3.getClass().getName());

System.out.println(a1.getClass()== a2.getClass());

System.out.println(a1.getClass()== a3.getClass()); 

2. 

getSuperClass方法的帮助

System.out.println(a1.getClass().getSuperclass().getName());

3.

int[] a = new int[3]; 

Object obj = a;

//Object[] obj1 = a //有错!

Object[] obj3 = a1

Object obj4 = a3;

if(obj4 instanceofString[][]){

  System.out.println(obj1.getClass().isArray());

}

**在这里分析研究Arrays.asList()方法处理int[]String[]时的差异,以及Arrays.deepToString()方法不能处理int[],但能处理String[]的原因。

4.

privatestaticvoidprintObject(Objectobj) {

if(obj.getClass().isArray()){

intlen =Array.getLength(obj);

for(inti=0;i<len;i++) {

System.out.println(Array.get(obj,i));

}

} else {

System.out.println(obj);

}

}

5.似乎没有办法直接得到,需要取出每个元素对象,然后再对各个对象进行判断,因为其中每个具体元素的类型都可以不同,例如Object[]x = new Object[]{abc,Integer.Max}Object[]String[]没有父子关系,ObjectString有父子关系,所以newObject[]{aaa,bb}不能强制转换成newString[]{aaa,bb};,Objectx = abc能强制转换成Stringx =abc

main.invoke(null,(Object)(newObject[]{aaa,xxx}));不能调用publicstaticvoidmain(String [] args)

1.

Class类帮助文档开始部分的介绍。

String[] a1 = new String[8];

String[] a2 = new String[9];

String[][] a3 = new String[6][4];

  ().getName());

System.out.println(a3.getClass().getName());

System.out.println(a1.getClass()== a2.getClass());

System.out.println(a1.getClass()== a3.getClass()); 

2. 

getSuperClass方法的帮助

System.out.println(a1.getClass().getSuperclass().getName());

3.

int[] a = new int[3]; 

Object obj = a;

//Object[] obj1 = a //有错!

Object[] obj3 = a1

Object obj4 = a3;

if(obj4 instanceofString[][]){

  System.out.println(obj1.getClass().isArray());

}

**在这里分析研究Arrays.asList()方法处理int[]String[]时的差异,以及Arrays.deepToString()方法不能处理int[],但能处理String[]的原因。

4.

privatestaticvoidprintObject(Objectobj) {

if(obj.getClass().isArray()){

intlen =Array.getLength(obj);

for(inti=0;i<len;i++) {

System.out.println(Array.get(obj,i));

}

} else {

System.out.println(obj);

}

}

5.似乎没有办法直接得到,需要取出每个元素对象,然后再对各个对象进行判断,因为其中每个具体元素的类型都可以不同,例如Object[]x = new Object[]{abc,Integer.Max}

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
原创粉丝点击