Java反射

Java反射作用原理:

反射机制在运行时,对于任意一个类,都能够知道这个类的所有属性和方法:

对于任意个对象,都能够调用它的任意一个方法,在Java中,只要给定类的名字,

就可以通过反射机制来获得类的所有信息

 

反射的实现方式:

  Class.forName("类的路径");

  类名.class

  对象名.getClass()

  基本类型的包装类,可以调用包装类的Type属性来获取该包装类的Class对象

反射机制的优缺点:

  优点:

  能够运行时动态获取类的实例,提高灵活性

  与动态编译结合

  缺点:

  使用反射

  性能较低,需要解析字节码,将内存中的对象进行解析(编译器不会对代码优化,写成什么样就是什么样)

  解决方案:

    通过setAccessible(true)关闭JDK的安全检查来提升反射速度;

    多次创建一个类的实例,有缓存会快很多

    ReflectASM工具类,通过字节码生成的方式会加快反射速度,但相对不安全,破坏了封装性

(因为通过反射可以获得私有方法和属性)

 

posted @ 2022-10-27 21:08  doremi429  阅读(12)  评论(0编辑  收藏  举报