java 反射机制的一个简单问题? 本帖最后由 Wwushuang 于 2009-12-12 16:16:16 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Incompatible operand types Class<capture#6-of ? extends int[]> and Class<capture#7-of ? extends int[][]>Incompatible operand types Class<capture#8-of ? extends int[]> and Class<capture#9-of ? extends String[]>这是那个错误提示 也就是不相容的类型 类的比较应该用 instance of你直接比较两个Class对象,不出万一的话大多数都会触发异常的 这样子比较也不行,如果你想比较两个类的类型名字是否相同 就 tostring之后再用equals Object a1 = new int[] { 1, 2, 3 }; int[][] a3 = new int[2][3]; String[] a4 = new String[] { "a", "b", "c" }; System.out.println(a1.getClass() == a3.getClass System.out.println(a1.getClass() == a4.getClass()); 你那个不能从int型转换成object的 int是基本类型 不是对象类型 Class a = a1.getClass(); Class b = a3.getClass(); System.out.println(a ==b); int是基本类型,它的GETCLASS是什么来着。 getClass()是Object 的方法。对于数组类型,数组有从Object继承吗?(于是我也纳闷了,可以调用getClass()方法)用此方法时,一维数组会返回class [I 二维数组会返回class [[I返回的这两个类型不是类,它们的比较同两个基本数据类型的比较,比如:System.out.println(1==true);一样,会出现无法比较的编译错误。 补充下,我上面说的一维数组和二数组的返回类型是数组元素为int时候。其它类型的元素返回自己可以实验下。比如你上面的a4.getClass()就返回:class [Ljava.lang.String; 你利用反射获得的是Class对象,不可能直接比较的。应该用instanceof的 不是吧 我换了几个IDE工具都提示有错 你的jdk是? 对于数组类型的变量编译器在编译时,其实已经知道类型了。也就是说,编译器认为这2个类型是不一样的。根本没有比较的需要。对于总是不成立的比较,其实是没有意义的。这个编译错误是 JDK 1.6的新功能 20楼说得最有理,我把源级别调到1.4不报错,调到1.5或1.6就会报错。是那个意思,不管怎么比较,类型不一样,永远是false! 【新手学java】jdk1.6+myeclipse6.5+sqlserver2000数据库连接问题 关于多线程的问题 java 匿名 new 新手~~关于异常的使用问题,谢谢! 调试一程序 问一个问题,关于文件操作的 这个东东怎么解决? 刚转到Java碰壁,向达人求教 javac后会出现两个附带文件,请问是为什么? 两个区别的问题? 根据路径运行程序 ResultSet更新不了数据
你直接比较两个Class对象,不出万一的话大多数都会触发异常的
int[][] a3 = new int[2][3];
String[] a4 = new String[] { "a", "b", "c" };
System.out.println(a1.getClass() == a3.getClass System.out.println(a1.getClass() == a4.getClass());
你那个不能从int型转换成object的 int是基本类型 不是对象类型
Class b = a3.getClass();
System.out.println(a ==b);
对于数组类型,数组有从Object继承吗?(于是我也纳闷了,可以调用getClass()方法)
用此方法时,一维数组会返回class [I 二维数组会返回class [[I
返回的这两个类型不是类,它们的比较同两个基本数据类型的比较,
比如:System.out.println(1==true);一样,会出现无法比较的编译错误。
不是吧 我换了几个IDE工具都提示有错 你的jdk是?
编译器在编译时,其实已经知道类型了。也就是说,编译器认为这2个类型是不一样的。根本没有比较的需要。对于总是不成立的比较,其实是没有意义的。
这个编译错误是 JDK 1.6的新功能
是那个意思,不管怎么比较,类型不一样,永远是false!