本帖最后由 唐辉辉 于 2012-6-22 23:16 编辑
在听张老师的反射发现有点迷糊的地方,现在搞明白了。贴出来看看有没有其它的意见:
- import java.lang.reflect.*;
- import java.util.Arrays;
- public class ReflectArray {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- int[] a1 = new int[]{1,3,5};
- int[] a2 = new int[5];
- int[][] a3 = new int[][]{{3,4,5,2},{1,2,3,5},{1,2,3,5}};
- String[] a4 = new String[]{"ab","de","fg"};
-
- System.out.println(a1);
- Object obj1 = a1;
- System.out.println(obj1);
- //Object[] obj2 = a2;
- Object[] obj3 = a3;
- System.out.println(obj3);
- Object[] obj4 = a4;
- System.out.println(obj4);
-
- System.out.println(Arrays.asList(a1));
- System.out.println(Arrays.asList(a3));
- System.out.println(Arrays.asList(a4));
- }
- }
复制代码 Object[] obj3 = a3;
//由于a3是一个二维数组,所以Object[ ] obj3 = a3;是正确的。可以理解为这个数组里装的是Object,而二维数组中的数组就是Object的类型。
System.out.println(Arrays.asList(a3));
//老师说:基本类型的数组调用jdk1.5的asList(T... a)方法,其它类型就会调用jdk1.4的asList(Object[] obj)。此处的输出结果为:[[I@61de33, [I@14318bb, [I@ca0b6] 。 从结果看显然是调用的jdk1.4的。之前一直郁闷为什么会输出的是hashcode值,而下面的却能输出具体的值。想了好才发现,这跟toString方法有关系。a4中数组的元素为String,它的toString()方法返回的是对象本身。而数组的toString()方法返回的是hashCode值。
|
|