Java Reflection Mechanism(反射机制)
作者:
铜雀春深锁不住 | 来源:发表于
2017-07-04 12:43 被阅读0次
1. Why do we need the java reflection?
Answer: to discover the information about an object at the runtime.so it is a dyamic mechansim.
2. Wiki says the reflection is:
the program observe itself,modifies itself structure and action(行为).
3. what can reflection can do at the runtime (在运行时)?
判断任意一个对象所属的类;
构造任意一个类的对象;
判断任意一个类所具有的成员变量和方法;
调用任意一个对象的方法;
生成动态代理。
3 steps the reflection do
4: talk about Classes
In java,the object(对象)有两种类型:引用类型和基本类型
引用类型 extends java.lang.Object
基本类型 boolean, byte, short, int, long ,double ,char ,float
理解 class 和 object
java reflection 允许在程序运行时去获取一个class(类)的成员变量和方法。
虚拟机在class文件的加载阶段,把类信息保存在方法区数据结构中,并在Java堆中生成一个Class对象,作为类信息的入口。
class对象
对于每种类型的对象,Java虚拟机会实例化出一个不可变的java.lang.Class对象的实例,如上图所示.它提供了一些方法去检查这个对象的运行时属性包括它的成员和类型信息。Class类同时也提供了创造新的类和对象的能力。最重要的是它是所有反射API(Reflection APIs)的出发点。
5: how to begin the reflect operation?
step1:get the class 对象
just like this:
class c=obj_instance.getclass();
if there no instance of an obj,how to do?
boolean b;
Class d = b.getClass(); // 编译错误
Class d = boolean.class; // 正确
step2: when we already get the class 对象 in step1,then we can get class 对象中的声明信息,例如
修饰符 public private protected abstract static final
后续step:
既然获得了class对象,也就获得了方法区中类信息的入口,可以获得类的方法,成员变量,给方法赋值,给属性赋值,扩展数组等。
本文标题:Java Reflection Mechanism(反射机制)
本文链接:https://www.haomeiwen.com/subject/ebgthxtx.html
网友评论