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对象不会进行初始化,意味着不进行包括初始化等一系列步骤,静态块和静态对象不会得到执行.这种一般使用的比较少。

反射优缺点反射的应用场景

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

,