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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhkqy 中级黑马   /  2013-12-10 10:32  /  1229 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  1. int[] a1 = new int[3];
  2.   int[] a2 = new int[4];
  3.   int[][] a3 = new int[2][3];
  4.   String[] a4 = new String[3];
  5.   System.out.println(a1.getClass() == a2.getClass());
  6.   System.out.println(a1.getClass() == a3.getClass());//出错
  7.   System.out.println(a1.getClass() == a4.getClass());//出错
复制代码

提示为Incompatible operand types Class<capture#3-of ? extends int[]> and Class<capture#4-of ? extends int[][]>
这是为什么啊?

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

3 个回复

倒序浏览
你这是在比较两个对象是不是属于同一个类的字节码,这不是明显的错吗,一个是一维数组,一个是二维数组,一个是String 类型的三个不同的类,字节码就不 一样啊,当然会报错了,a1.getClass==a2.getClass没报错是因为他们以属于同一个类的字节码
回复 使用道具 举报
我也很疑惑这个方法的作用,我知道getClass()只能用于比较相同类或者其子类对象。用来判断他们是否相同,但是如果我需要判断2个没有什么关系的类或者东西的时候这个方法就会直接报错。所以应该有其他方法来实现楼主要的功能,所以我也想问问是什么方法

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
a1是int类型的一维数组,a3是int类型的二维数组,他们是不能进行比较的
a4是String类型的一维数组,它与a1也不能进行比较
a1、a2属于同种类型
a1、a3、a4三者之间属于不同类型

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

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