黑马程序员技术交流社区
标题:
关于学习张老师基础加强的数组反射问题;
[打印本页]
作者:
邓杰
时间:
2012-6-20 09:16
标题:
关于学习张老师基础加强的数组反射问题;
本帖最后由 邓杰 于 2012-6-20 10:50 编辑
package studynotezhang.day1;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ReflectTest
{
public static void main(String[] args)throws Exception
{
int[] a1=new int[3];
int[] a2=new int[4];
int[][] a3=new int[2][3];
String[] a4=new String[3];
System.out.println(a1.getClass() == a2.getClass());
System.out.println(a1.getClass() == a3.getClass());//这里会报错;
System.out.println(a1.getClass() == a4.getClass());//这里会报错;
}
错误提示:Incompatible operand types Class<capture#8-of ? extends int[]> and Class<capture#9-of ? extends int[][]>
问问为什么;
和张老师写的一样啊。为什么他没有报错返回结果为true false false;
有的朋友说是JDK版本的问题;我的是7.0; 可后面的版本肯定是要兼容前面的版本的啊;不然以前的哥们不就悲剧了;对吧?大家看看该怎么解决;
好吧。既然是版本的问题,可是以后我们开发的时候肯定都是用后面高级的版本;那这个问题应该怎么解决呢,总不能都用1.4的版本去开发吧;
坐等强人解决这个问题;
作者:
车风波
时间:
2012-6-20 09:25
1.5以后有泛型约束 a1.getClass()返回值是Class<? extends int[]>,a4.getClass()返回值是 Class<? extends String[]>。
你把JDK改成1.4的就没事了。
作者:
余银桂
时间:
2012-6-20 10:01
使用equals能解决问题。Java中的“==”和“equals”还是有区别的
System.out.println((a1.getClass()). equals (a3.getClass()));
System.out.println((a3.getClass()). equals (a4.getClass()));
具体问题的确是JDK版本的问题!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2