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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

反射中老说到字节码 啥意思 呢谁给详细讲讲啊

评分

参与人数 1技术分 +1 收起 理由
admin + 1 看看大家的回答!

查看全部评分

4 个回复

倒序浏览
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法和属性;
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
就是.class文件,Class的实例对象不能主动创建,当一个类被加载,或当加载器的defineClass()被JVM调用,JVM 便自动产生一个Class实例对象。一下是部分源代码:
public final   
class Class<T> implements Serializable,   
java.lang.reflect.GenericDeclaration,   
java.lang.reflect.Type,   
java.lang.reflect.AnnotatedElement {   
private Class() {}     //构造方法为私有的  
public String toString() {   
return ( isInterface() ? "interface " :   
(isPrimitive() ? "" : "class "))   
+ getName();   
}

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
字节码就是我们在执行javac XX.java时候生成的一个XX.class文件。把用java编写的包括其modifiers(诸如public, static 等)、superclass(例如Object)、实现之interfaces(例如Cloneable),也包括fields和methods的所有信息,都存进.class文件当中了。然后通过命令java xxx解析执行class文件。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
字节码:即类被编译后,产生的.class文件被加载到内存后的内容。
一个类被类加载器加载到内存中,占用一片存储空间,这个空间里面的内容就是类的字节码,不同类的字节码是不同的,所以他们在内存中的内容也是不同的。这一个个的空间可分别用一个个的对象来表示,这些对象显然具有相同的类型,这个类型就是Class类。

得到每个字节码对应的实例对象的方法有3种:
1. 类名.class,例如:Date.class
2. 对象.getClass(),例如:New Date().getClass()
3. Class.forName("类名"),例如:Class.forName("java.util.Date")

评分

参与人数 1技术分 +1 收起 理由
荣凯旋 + 1

查看全部评分

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