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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 邓杰 于 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的版本去开发吧;
坐等强人解决这个问题;

2 个回复

正序浏览
使用equals能解决问题。Java中的“==”和“equals”还是有区别的

           System.out.println((a1.getClass()). equals (a3.getClass()));
                 System.out.println((a3.getClass()). equals (a4.getClass()));   

具体问题的确是JDK版本的问题!
回复 使用道具 举报
1.5以后有泛型约束 a1.getClass()返回值是Class<? extends int[]>,a4.getClass()返回值是 Class<? extends String[]>。
你把JDK改成1.4的就没事了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马