A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨杨 中级黑马   /  2013-3-2 11:08  /  2497 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨杨 于 2013-3-3 13:57 编辑


  1.         /**
  2.          * @param args
  3.          * @throws Exception
  4.          */
  5.         public static void main(String[] args) throws Exception {
  6.                
  7.                 int[] a1=new int[3];
  8.                 int[] a2=new int[4];
  9.                 int[][] a3=new int[3][4];
  10.                 String[] a4= new String[4];
  11.                 System.out.println(a1.getClass()==a2.getClass());
  12.                 System.out.println(a1.getClass()==a3.getClass());//Incompatible operand types Class<capture#3-of ? extends int[]> and Class<capture#4-of ? extends int[][]>
  13.                 System.out.println(a1.getClass()==a4.getClass());//Incompatible operand types Class<capture#5-of ? extends int[]> and Class<capture#6-of ? extends String[]>
  14.                
  15.         }

  16.         private static void ChangerVale(Object obj) throws Exception {
  17.                 Field[] fields= obj.getClass().getFields();//getDeclaredFields();
  18.                 System.out.println(fields.length);
  19.                 for(Field field:fields){
  20.                         if(field.getType()==String.class){
  21.                                 String oldchar= (String)field.get(obj);
  22.                                 String newString =oldchar.replace('b', 'a');// "a" "b" 与 'a' 'b'区别
  23.                                 field.set(obj, newString);
  24.                         }
  25.                         
  26.                 }
  27.         }

复制代码
是都是class 对象 应该能比较类型 张老师讲的时候不报错我写的时候报编译时异常
是java jdk改进了还是我写错了

评分

参与人数 1技术分 +1 收起 理由
张庚 + 1 如果也问题已解决,请改为已经解决,没有,.

查看全部评分

2 个回复

倒序浏览
本帖最后由 付玉光 于 2013-3-2 11:58 编辑

//首先我可以肯定的告诉你,你写的代码没有了。

//编译时会报异常 ,也不是JAVA JDK改进了,

//因为它们都是字节码文件对象(是实例对象),但它们是不同类型的字节码文件对象。

//不同类型的实例对象,相比编译时是肯定会报异常的!

//,所以,当它们类型不同时,是不能比较的。

//下边是我给你举的一个小案例,你测试一下,就会明白的。
class Person {
         private int age;
         private String name;
}
class Dog {
         private int age;
         private String name;
}

class YY1
{
        public static void main(String[] args) throws Exception {
                Person p = new Person();
                                Dog d = new Dog();
                                int i = 5;
                                String s = "ss";
                                System.out.println(s==i);//编译报:不可比较的类型:java.lang.String 和 int
                                System.out.println(p==d);//编译报:不可比较的类型:Person 和 Dog
        }
}
希望对你帮助{:soso_e100:}

评分

参与人数 1技术分 +1 收起 理由
张庚 + 1

查看全部评分

回复 使用道具 举报
付玉光 发表于 2013-3-2 11:33
//首先我可以肯定的告诉你,你写对了。

//报编译时异常 ,也不是JAVA JDK改进了,

他们返回类型都是class类 a1 返回 Class<? extends int[]> java.lang.Object.getClass()
a3 Class<? extends int[][]> java.lang.Object.getClass()
应该是java.lang.Object.getClass 做了改进jdk 1.6 比jdk1.5 做了改进



评分

参与人数 1黑马币 +3 收起 理由
张庚 + 3

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马