当前位置: 首页 > 网络应用技术

Java中反射机制的分析

时间:2023-03-07 23:34:05 网络应用技术

  反射机制是指该程序可以在运行时获得自己的信息的信息,即在程序运行时动态加载和获取类的详细信息,以操作类或对象的属性和方法。本质是,在JVM获得类对象之后,它通过类对象进行编译以获取对象的各种信息。反射是Java的特征之一,并且是间接操作目标对象的机制。

  班级是反思的基础。要了解反射,我们必须首先了解类别的类别。在程序的运行中,虚拟机维护类型标识符,称为所有对象的运行时类型。此信息跟踪每个对象类的完整结构信息,包括所有权,所有权,拥有的methods and fields等的软件包名称,类名称,实现接口等。您可以通过特殊的Java类访问此信息。此类是CLAS类。您可以将类别类型理解为类类型。类对象称为类类型对象。类对象对应于加载到JVM的.class文件。

  首先,JVM会将代码编译到.class intecode文件中,然后按Class Loader(类加载程序)加载到JVM的内存中,并且它将创建一个类别的类对象来存储IT.Object,但类类型对象)。在创建类对象之前,JVM将检查其类是否已加载并找到相应的类对象。如果加载,它将分配内存然后初始化。

  加载类后,堆内存的方法区域会产生类对象。该对象包含完整的类结构信息。通过此类对象,您可以看到类的结构,就像镜子一样。因此,它称为:反射。

  常见的反射机制

  java.lang.class;

  java.lang.reflect.constructor;

  java.lang.reflect.field;

  java.lang.reflect.Method;

  java.lang.reflect.modifier;

  反射通常使用的API

  目的。setAccessible(true);

  班级:

  获取公共属性:getfield(“属性名称”);

  获取私有属性:getDeclaredField(“属性名称”);

  通过指定的方法名称获取公共-Fre -Free方法对象:getMethod(“方法名称”,null);

  获取所有公共方法:getMethods();

  获取所有方法:getDeclaredMethods();

  通过指定方法名称获取私有参与方法:getDeclaredMethod(“方法名称”,方法类型参数...);

  调用打开的构造函数:getConstructor(构造参数类型);

  调用私有所有权:getDeclaredConstructor(构造参数类型);

  确定它是否是某个类别的实例:isInstance(obj);

  场地:

  获取属性名称:getName();

  获得属性的类型:getType();

  属性的修改:getModifiers();

  设置属性值1:要设置的分类对象的参数值:set(obj,obj);

  方法:

  方法对象

  构造函数:

  newinstance();//通过结构获取类的实例对象

  让我们看一下代码:

  getName方法可以打印出类的名称。

  通过getfields()方法获得的所有公共成员变量的信息。该方法的反思方法有一个公共成员变量,并且还有一条消息可以获取您声明的所有成员变量:field [] fs= c.getDeclaredFields(),遍历的结果如下:

  反射不应用于实际编程,但许多设计与反射机制有关,例如:动态代理机制,JDBC连接到数据库,弹簧/休眠框架