本帖最后由 Wwushuang 于 2009-12-12 16:16:16 编辑

解决方案 »

  1.   

    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[]>这是那个错误提示 也就是不相容的类型
      

  2.   

    类的比较应该用 instance of
    你直接比较两个Class对象,不出万一的话大多数都会触发异常的
      

  3.   

    这样子比较也不行,如果你想比较两个类的类型名字是否相同 就 tostring之后再用equals
      

  4.   

    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());
      

  5.   


    你那个不能从int型转换成object的 int是基本类型 不是对象类型
      

  6.   

    Class a = a1.getClass();
    Class b = a3.getClass();
    System.out.println(a ==b);
      

  7.   

    int是基本类型,它的GETCLASS是什么来着。
      

  8.   

    getClass()是Object 的方法。
    对于数组类型,数组有从Object继承吗?(于是我也纳闷了,可以调用getClass()方法)
    用此方法时,一维数组会返回class [I  二维数组会返回class [[I
    返回的这两个类型不是类,它们的比较同两个基本数据类型的比较,
    比如:System.out.println(1==true);一样,会出现无法比较的编译错误。
      

  9.   

    补充下,我上面说的一维数组和二数组的返回类型是数组元素为int时候。其它类型的元素返回自己可以实验下。比如你上面的a4.getClass()就返回:class [Ljava.lang.String;
      

  10.   

    你利用反射获得的是Class对象,不可能直接比较的。应该用instanceof的
      

  11.   


    不是吧 我换了几个IDE工具都提示有错 你的jdk是?
      

  12.   

    对于数组类型的变量
    编译器在编译时,其实已经知道类型了。也就是说,编译器认为这2个类型是不一样的。根本没有比较的需要。对于总是不成立的比较,其实是没有意义的。
    这个编译错误是 JDK 1.6的新功能
      

  13.   

    20楼说得最有理,我把源级别调到1.4不报错,调到1.5或1.6就会报错。
    是那个意思,不管怎么比较,类型不一样,永远是false!