第十八章:类加载机制与反射

一:基本概念

     1.反射:动态创建对象,动态调用方法、访问并修改指定对象的成员变量值。

                java中的类实际上也是实例,它们都是java.lang.Class的实例哦!

     2.类加载或类初始化:   加载    连接  初始化 三个步骤哦! 

                   类加载器:将.class文件加载到内存中去。并生成对应的java.lang.Class对象。

       加载:将类的class文件读入内存,并创建其对应的Class对象。   通过类加载器实现的哦!

          类加载机制:缓存机制,保证所有加载过的Class都会被缓存,所以修改java文件后必须重启JVM。

       连接:将类的二进制数据合并到JRE中(验证、准备、解析)。

                 验证:

                 准备:为类变量分配内存,设置初始值。

                 解析:将类的二进制数据中的符号引用替换成直接引用。

       初始化:指定初始值。  先初始化其直接父类!(向上递归哦)

  3.java对象:编译时类型和运行时类型

          编译时和运行时?  

 

   java机制:每个类被加载之后,系统就会为该类生成一个对应的Class对象,通过该对象就可以访问到JVM中的这个类。

         获取Class对象的三种方式:

                          1.Class.forName(String clazzName)

                          2.调用的class属性  Person.class

                          3.调用某个对象的getClass()方法

      4.可以访问到的资源:构造器、方法、成员变量、Annotation(注解)、内部类、该类所实现的接口、该类的修饰符、包名。

 

      5.反射创建对象

          1.获取Class对象后,使用Class对象的newInstance()方法来创建该Class对象对应类的实例。

             spring就是如此实现的哦!

                  a:使用配置文件配置对象。

                  b:程序根据配置文件来创建对象

          2.使用Class对象获取指定的Constructor对象(getConstructor()来获取),再调用Constructor对象的newInstance()方法来创建Class对象对应类的实例。

    

二:难点(动态代理)

      

 

 

     

三:反射和泛型

     1.通过在反射中使用泛型,可以避免使用反射生成的对象需要强制类型转换。

        Class类的泛型:String.class 的类型是 Class<String>;  如果Class对应的类暂时未知,则使用Class<?>。  

        对比:和集合的泛型很像哦! 

     

     2. 注解.class ?

         接口.class  ? 

 

 

 四:总结

  1.什么事反射?

            http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html

            http://blog.csdn.net/liujiahan629629/article/details/18013523

  2.什么事动态代理?

  3.指针?          

  4.类加载器:将.class文件加载到内存中! 

 

 

 

 

      

 

转载于:https://www.cnblogs.com/njqa/p/5889507.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值