Java反射的原理及其作用是什么?

PHPz
PHPz 转载
2023-04-26 23:31:06 345浏览

1.调用反射的流程

(1)准备阶段:编译期装载所有的类,将每个类的元信息保存至Class类对象中,每一个类对应一个Class对象

(2)获取Class对象:调用x.class/x.getClass()/Class.forName() 获取x的Class对象clz(这些方法的底层都是native方法,是在JVM底层编写好的,涉及到了JVM底层,就先不进行探究了)

(3)进行实际反射操作:通过clz对象获取Field/Method/Constructor对象进行进一步操作

2.获取class类

要想通过反射获取一个类的信息,首先要获取该类对应的Class类实例,Class类的实例代表了正在运行中的Java应用的类和接口。Class类没有公共的构造方法,Class类对象是在二进制字节流(一般是.class文件,也可通过网络或zip包等路径获取)被JVM加载时,通过调用类加载器的defineClass()方法来构建的。

/**
 * Instances of the class {@code Class} represent classes and
 * interfaces in a running Java application.
 * {@code Class} has no public constructor. Instead {@code Class}
 * objects are constructed automatically by the Java Virtual Machine as classes
 * are loaded and by calls to the {@code defineClass} method in the class
 * loader.
*/
 
public final class Class<T> implements java.io.Serializable,GenericDeclaration,Type,AnnotatedElement {
    ......
}

以上就是Java反射的原理及其作用是什么?的详细内容,更多请关注php中文网其它相关文章!

声明:本文转载于:亿速云,如有侵犯,请联系admin@php.cn删除