黑马程序员技术交流社区
标题:
数组反射的问题
[打印本页]
作者:
公子-醉香
时间:
2013-12-16 17:21
标题:
数组反射的问题
import java.lang.reflect.Array;
import java.util.Arrays;
public class ArrayRef {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] a1=new int []{1,2,3};
int [] a2=new int [4];
int [][] a3=new int [2][3];
String [] a4=new String []{"1","2","3"};
System.out.println("--------------------");
//判断数组a1和数组a2的字节码是否相同
System.out.println("数组a1和数组a2的字节码是否相同"+(a1.getClass()==a2.getClass()));
//Array类的一些方法
System.out.println("--------------------");
System.out.println("a3数组名字"+a3.getClass().getName());
System.out.println("a1数组超类的名字"+a1.getClass().getSuperclass().getName());
//数组与object[]的对应关系
Object obj1=a1;
Object obj3=a4;
Object [] obj4 =a4;
Object obj5 =a3;
Object [] obj6 =a3;
System.out.println("--------------------");
System.out.println("无工具类Arrays的输出"+a1);
System.out.println("无工具类Arrays的输出"+a4);
System.out.println("--------------------");
//调用工具类Arrays的asList()方法
System.out.println("--------------------");
System.out.println("有工具类Arrays的输出"+Arrays.asList(a1));
System.out.println("有工具类Arrays的输出"+Arrays.asList(a4));
System.out.println("--------------------");
//调用printObject()方法
printObject(a1);
printObject(1);
}
//打印对象中的成员方法
private static void printObject(Object obj){
Class cla=obj.getClass();
if(cla.isArray()){
System.out.println("调用自定义方法的数组输出");
int len=Array.getLength(obj);
for(int i=0;i<len;i++){
System.out.println(Array.get(obj, i));
}
System.out.println("--------------------");
}
else{
System.out.println("调用自定义方法的普通对象输出");
System.out.println(obj);
System.out.println("--------------------");
}
}
}
/*
程序分析:
1.具有相同维数和元素类型的数组的字节码相同,即具有相同的Class实例对象。
2.通过调用Class实例对象的getName方法可以返回字节码的名字,通过调用Class实例对象的getSuperclass方法可以返回父类
3.当直接输出数组时,得到的输出结果不理想
4.通过工具类Arrays的asList方法可以输出数组中参数的值
5.为了避免工具类Arrays的asList方法的弊端,可以编写自定义的方法进行输出。
*/
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2