黑马程序员技术交流社区
标题:
数组反射的问题
[打印本页]
作者:
林发明
时间:
2014-3-30 11:33
标题:
数组反射的问题
//数组与Object的关系
int [] a1 = new int[]{1,2,3};
int [] a4 = new int[5];
int [][] a2 = new int[2][3];
String [] a3 = new String[]{"adf"};
System.out.println(a1.getClass() == a4.getClass());
System.out.println(a1.getClass() == a2.getClass());//为什么这一行提示错误呢?我仅仅是判断字节码是否相同啊
复制代码
QQ截图20140330113238.png
(95.78 KB, 下载次数: 8)
下载附件
2014-3-30 11:32 上传
作者:
630681386@qq.co
时间:
2014-3-30 13:02
其实这个问题就相当于String.class==Integer.class一样,在数组中一维数组和多维数组不是一种类型的,不能放到一起去比较
作者:
清风木扬
时间:
2014-3-30 13:07
java1.5以前是可以的,java1.5以引用泛型 现在的Class是一个泛型类。
a1.getClass() 的返回结果类型是 Class<? extends int[]>
a2.getClass() 的返回结果类型是 Class<? extends int[][]>
类型不同不可以用==
//解决方法。
System.out.println(a1.getClass().getName() == a2.getClass().getName());
System.out.println((Class)a1.getClass() == (Class)a2.getClass());
作者:
kevinmesss.tz
时间:
2014-3-30 13:12
类型和维度相同的数组他们的字节码文件相同。
==表示两个运算数是否相等
1.5之后如果比较的两个数不是同一类型则会报错
a1的类型是int[].class
a2是int[][].class,类型不匹配
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2