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

本文深入探讨了Java中数组的各种特性,包括数组类型的定义、数组与Object类型的关系、基本类型数组与引用类型数组的区别,以及Arrays工具类的使用方法。文章还对比了int[]与String[]在处理上的差异。
---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ----------------------

 

 

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

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

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培训、期待与您交流! ----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值