黑马程序员技术交流社区
标题:
反射的字节码
[打印本页]
作者:
奋发吧小白
时间:
2014-9-1 10:29
标题:
反射的字节码
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());
复制代码
打印结果为;true
false
false
我想请教一下,所谓的字节码,不是类编译完成后生成的那个 类名.class文件吗?
若不是,那是指的什么字节码?
若是的话,那
a3.getClass()和
a4.getClass()都是在同一个类中,得到的应该是同一个.class文件,为什么会输出false呢?
请大神指教下!反射真的好难理解啊!
作者:
Sakuratossi
时间:
2014-9-1 11:49
你看下这个打印结果就明白了。
public class ReflectTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] a1 = new int[3];
int [] a2 = new int [4];
int [] [] a3 = new int [2] [3];
String [] a4 = new String[3];
Class a1c,a2c,a3c,a4c;
a1c = a1.getClass();
a2c = a2.getClass();
a3c = a3.getClass();
a4c = a4.getClass();
System.out.println("a1.getClass(): " + a1c.getName());
System.out.println("a2.getClass(): " + a2c.getName());
System.out.println("a3.getClass(): " + a3c.getName());
System.out.println("a4.getClass(): " + a4c.getName());
// System.out.println(a1.getClass() == a3.getClass());
// System.out.println(a1.getClass() == a4.getClass());
}
}
复制代码
结果是:
a1.getClass(): [I
a2.getClass(): [I
a3.getClass(): [[I
a4.getClass(): [Ljava.lang.String;
你的a3 对象所属的是一个二维int型数组类 其实就是int[][].class, a4这个对象是String一维数组类就是String[].class这个类。
不是看你把这两个对象用在哪个类里就能用getClass得到使用他们的那个对象所属的类,getClass方法的概念要弄清楚。
字节码的话,应该是.class。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2