Java Reflection Mechanism(反射机制)

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • 对象的创建与销毁 Item 1: 使用static工厂方法,而不是构造函数创建对象:仅仅是创建对象的方法,并非Fa...
    孙小磊阅读 2,031评论 0 3
  • 唐朝被时间割碎 碎成你眼角眉梢的娇媚 命运沿掌纹溯洄 流淌出深深浅浅的喜悲 我拿思念下酒 把月光喝醉 我隔着远山 ...
    鲸溪阅读 461评论 1 5
  • 尽管一直提醒田保护好视力,但田的右眼还是配上275度的近视镜,只愿田以后更注意用眼习惯别让度数再加深! ...
    田米米阅读 180评论 0 0