您的位置:首页 > 移动开发 > Objective-C

数组与Object的关系及其反射类型

2014-09-24 08:53 344 查看

数组与Object的关系及其反射类型。

具有相同类型和同一维数的数组属于同一类型,即具有相同的Class实例对象。int[]的父类型 是Object,基本数据类型的一维数组可以当作Object来使用,不能当作Object[]来使用,非基本数据类型的一维数组可以当作 Object来使用,也可以当作 Object[]来使用。

int[] a2=new int[4];
int[][] a3=new int[2][3];
String[] a4=new String[]{"a","b","c"};
System.out.println(a1.getClass() == a2.getClass());//true
//    System.out.println(a1.getClass() == a3.getClass());
//得到int[]的父类类型。
System.out.println(a1.getClass().getSuperclass().getName());//Object
System.out.println(a3.getClass().getSuperclass().getName());//Object
Object aObj1=a1;
Object aObj2=a3;
Object aObj3=a4;
//    Object[] aObj4=a1;编译不通过。
Object[] aObj5=a3;
Object[] aObj6=a4;

//   Arrays.asList()方法处理int[]和String[]的区别:
System.out.println(Arrays.asList(a1));//[[I@61de33],jdk1.4的语法,封包.
System.out.println(Arrays.asList(a4));//[a, b, c],jdk1.5的语法,可变参数.</span>


//数组的反射应用。

 //需求:定义一个打印对象的方法。

<span style="font-size:18px;">private static void printObject(Object obj) {
/*
* Array 类提供了动态创建和访问 Java 数组的方法。
Array 允许在执行 get 或 set 操作期间进行扩展转换,但如果发生收缩转换,
则抛出 IllegalArgumentException。

*/
Class clazz=obj.getClass();
if(clazz.isArray()){
int len=	Array.getLength(obj);
for(int i =0;i<len;i++){
System.out.println(Array.get(obj, i));
}
}else{
System.out.println(obj);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐