Java Reflection Mechanism(反射机制)

2017-07-04  本文已影响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对象,也就获得了方法区中类信息的入口,可以获得类的方法,成员变量,给方法赋值,给属性赋值,扩展数组等。

上一篇 下一篇

猜你喜欢

热点阅读