反射:
object a = new object();
这段代码运行了起来,首先JVM会启动,你的代码会编译成一个.class文件。然后被类加载器加载到JVM的内存中,你的类object加载到方法区中,创建了object类的class对象到堆中,每个类只有一个class对象,加载好后为你的对象分配内存,初始化也就是new object();反射就是在我们程序运行时需要动态的加载一些类,这些类可能之前用不到所以不用加载到jvm而是在运行时需要才加载
jvm编译的.class文件里面包含了当前字节码文件里面的所有内容只要我们获取到这个class对象 就可以对其为所欲为!!!
这个class对象中包含了对应字节码文件的所有成员变量 (Field) 所有成员方法(Method) 构造方法(Constructor)
二,反射机制的作用:
1,反编译:.class-->.java
在运行时判断任意一个对象所属的类。
在运行时构造任意一个类的对象。
在运行时判断任意一个类所具有的成员变量和方法。
在运行时调用任意一个对象的方法
反射的常用类和函数:Java反射机制的实现要借助于4个类:Class,Constructor,Field,Method;
通常你不需要直接使用反射工具,但是他们在你需要创建更加动态的代码时会很有用。反射在Java中是用来支持其他特征的,例如对象序列化和JavaBean (JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。)但是,如果能动态的地提取某各类的信息有时候还是很有用
网友评论