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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蓝迪 初级黑马   /  2012-9-14 10:26  /  2480 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 蓝迪 于 2012-9-14 10:37 编辑

//数组的反射
  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());//
我用的是eclipse,后面这两句报错,分别是
Incompatible operand types Class<capture#8-of ? extends int[]> and
Class<capture#9-of ? extends int[][]>
Incompatible operand types Class<capture#10-of ? extends int[]> and
Class<capture#11-of ? extends String[]>
都是不兼容的操作数类型,为什么会有报错啊,都已经是对象调用getClass()方法来获取字节码
判断的也就是字节码是否相同了,为什么还有这个报错
图为


评分

参与人数 1黑马币 +10 收起 理由
刘芮铭 + 10 细节问题多注意,张老视频中说的很清楚的!.

查看全部评分

3 个回复

正序浏览
这个我也不清楚,我只是知道换成equals就可以了,我也很想知道这个问题
回复 使用道具 举报
是jdk版本的问题,根据版主的提醒,去搜了以前的帖子,上面有说是因为
现在的版本 一个int型一维数组的class对象不能直接与int型多维数组的class对象或者一个string类型的class对象直接进行比较吧
所以遇到这个问题的朋友,把代码改为
System.out.println((a1.getClass()). equals (a3.getClass()));
System.out.println((a3.getClass()). equals (a4.getClass()));               
回复 使用道具 举报
==是对相同的数据类型作比较的,比如int和int类型作比较,String和String作比较
你说的后面两句根本就不是相同的类型,编译时会提醒你无法做比较
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马