java反射机制的作用 什么是反射机制

java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 java 语言的反射机制,下面我们就来聊聊关于java反射机制的作用 什么是反射机制?接下来我们就一起去了解一下吧!

java反射机制的作用 什么是反射机制

java反射机制的作用 什么是反射机制

反射机制介绍

java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 java 语言的反射机制。

Java获取 Class 对象的四种方式

1.知道具体类的情况下可以使用:

Class demo = Demo.class;

通过此方式获取Class对象不会进行初始化

2.通过 Class.forName()传入类的路径获取:

Class target = Class.forName("cn.javaguide.TargetObject");

Class.forName(className)方法,内部实际调用的是一个native方法 forName0(className, true, ClassLoader.getClassLoader(caller), caller);

第2个boolean参数表示类是否需要初始化,Class.forName(className)默认是需要初始化。一旦初始化,就会触发目标对象的 static块代码执行,static参数也会被再次初始化。

3.通过对象实例instance.getClass()获取:

Employee e = new Employee(); Class reflectClass = e.getClass();

4.通过类加载器xxxClassLoader.loadClass()传入类路径获取

class clazz = ClassLoader.LoadClass("cn.javaguide.TargetObject");

通过类加载器获取Class对象不会进行初始化,意味着不进行包括初始化等一系列步骤,静态块和静态对象不会得到执行.这种一般使用的比较少。

反射优缺点
  • 优点: 运行期类型的判断,动态加载类,提高代码灵活度。
  • 缺点: 1.性能瓶颈:反射相当于一系列解释操作,通知 JVM 要做的事情,比直接的 java 代码要慢很多。2.安全问题,让我们可以动态操作改变类的属性同时也增加了类的安全隐患。
反射的应用场景

在我们平时的项目开发过程中,基本上很少会直接使用到反射机制,但这不能说明反射机制没有用,实际上有很多设计、开发都与反射机制有关,例如模块化的开发,通过反射去调用对应的字节码;动态代理设计模式也采用了反射机制,还有我们日常使用的 Spring/Hibernate 等框架也大量使用到了反射机制。

  • 我们在使用 JDBC 连接数据库时使用 Class.forName()通过反射加载数据库的驱动程序;
  • Spring 框架的 IOC(动态加载管理 Bean)创建对象以及 AOP(动态代理)功能都和反射有g关系
  • 动态配置实例的属性;
,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页