Java反射

  1. 加载类,返回Class类型对象(类对象)                    Class.forName(全类名)                                   //字节码是对象
  2. 创建实例、返回                                                     Class对象.newInstance()                              //实例是对象
  3. 通过字节码对象得到方法对象                               Class对象.getMethod(方法名)                       //方法是对象
  4. 通过方法对象来实现调用方法                               方法对象.invoke(实例)

可以再不修改源码的情况下,通过控制配置文件来控制程序----灵活
缺点:反射是解释执行,对执行速度有影响           适当优化:Method、Field、Constructor类型的对象都有setAccessible方法

Java反射:加载完类之后,通过类加载器会在在堆中会产生一个Class类型的对象(1个类只有1个),这个对象包含了类的完整信息结构。

不同阶段获取类对象:任何阶段                                        类加载阶段及以后,因为已经有了类对象,直接取就可以                                        运行阶段( 运行类型)
         1)       Class.forName(全类名)                                                  2)                    类.class                                                                            3)            实例.getClass()   
4)通过类加载器获得:1.获取类加载器:实例.getClass().getClassLoader()        2.通过类加载器得到类对象ClassLoader.loadClass(全类名) 
5)基本数据类型获得类对象:基本数据类型.class                
6)基本数据类型的包装类获得类对象:包装类.TYPE
 

  类加载时机:1.new        2.子类被加载时        3.调用类的静态成员        4.通过反射*(动态加载)
        静态加载:编译时加载相关类,如果没有相关类侧报错,依赖性强       //类如在A类依赖B类,如果没有A类在编译时会记载B类
        动态加载:运行时加载相关类,运行时没有用到相关类,即使不存在则不会报错,降低了依赖               //使用反射机制返回类对象时ÿ

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值