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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵国刚 中级黑马   /  2013-8-14 11:30  /  972 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


请看代码注释部分            
我想问的是注释带?的地方,请看清问题,是编译报错,不是运行后结果!!!!
//数组与object的关系及其反射类型
        int [] a1 = new int[]{4,2};
        int [] a2 = new int[4];
        int [][]a3 = new int [2][3];
        String [] a4 = new String []{"e","a","g","d"};
        
        System.out.println(a1.getClass() == a2.getClass());//(int)类型相同,(一维数组)维度相同则数组的字节码相同
//        System.out.println(a1.getClass() == a3.getClass()); 这里编译不通过是因为多维数组没有字节码?
//        System.out.println(a1.getClass() == a4.getClass());为什么 编译不通过?
        System.out.println(a1.getClass().getSuperclass().getName());
如果是因为类型不同的话,他们不是class类型比较么?

评分

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

查看全部评分

2 个回复

倒序浏览
反射好像是JDK5.0出现的新特性吧,你看看你的JDK或JRE版本信息。
回复 使用道具 举报
本帖最后由 gudao20080 于 2013-8-14 12:33 编辑

你可以查看一下各个数组的字节码是否一致就清楚了
  1. package com.itcast.mapTest;
  2. import java.lang.reflect.*;
  3. public class ReflectTest {

  4.         public static void main(String[] args) {
  5.                 // TODO Auto-generated method stub
  6.                           int [] a1 = new int[]{4,2};
  7.                 int [] a2 = new int[4];
  8.                 int [][]a3 = new int [2][3];
  9.                 String [] a4 = new String []{"e","a","g","d"};
  10.                
  11.                 System.out.println(a1.getClass() == a2.getClass());//(int)类型相同,(一维数组)维度相同则数组的字节码相同
  12.                 //System.out.println(a1.getClass() == a3.getClass()); //这里编译不通过是因为多维数组没有字节码?
  13.                 //System.out.println(a1.getClass() == a4.getClass());//为什么 编译不通过?
  14.                
  15.                 System.out.println("a2: "+a2.getClass());  //获取a2的字节码
  16.                 System.out.println("a3: "+a3.getClass());  //获取a3 的字节码
  17.                 System.out.println("a4: "+a4.getClass());
  18.                 System.out.println(a1.getClass().getSuperclass().getName());
  19.         }        
  20. }
复制代码
输出结果是:
  1. true
  2. a2: class [I
  3. a3: class [[I
  4. a4: class [Ljava.lang.String;
  5. java.lang.Object
复制代码
可以看出,一维与二维数组他们的字节码文件是不同的,编译不通过是因为它们没有可比性

评分

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

查看全部评分

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