2024年3月28日发(作者:)
反射学习整理
【摘要】
本文主要通过自己对反射机制的总结编写的文档,主要目的就是为了自己以后能可以参
考温习也可以方便刚刚入门的同仁们学习指导,通过doc的编写相信可以在帮助别人的同时
提高自己。
反射机制;
Reflection API;
如何使用反射机制;
反射机制的应用举例;
第一节 反射机制
什么是反射机制,说的通俗一些就是在java运行期间动态加载一些不确定的类对象,
那么我们如何使用一个类的呢?当然大多数情况下我们是使用一个确定的类,然后通过在内
存中的加载再使用之。
其实在一个project中会有很多类,虚拟机并不是在每一次运行时都将所有的类都进行
加载然后解析的,是在我们使用的过程中才会被加载,这个大家可以看一下ClassLoader(在
后期中我也会编写ClassLoader相关的文章总结)
反射机制提供的功能:
加载运行时才能确定的数据类型;
解析类的结构,获取其内部的信息;
能够操作的类型或者实例;
1. 访问属性;
2. 调用方法;
3. 创建新的对象;
以上的功能我会在接下来的文字中都进行阐述,然后每一个功能点都会通过代码的形式
进行逐一的说明举例;
1.1动态加载类
Java虚拟机在运行是能加载的类型有如下几种:
类接口;
数组;
枚举;
注解(Annotation,可以参见我的另一篇文档,《java Annotation学习文档》);
基本数据类型;
在类加载的时候,JVM会自动加载上述类型对应的Class对象。
package ;
汪文君 QQ:532500648,属于个人劳动成果,如需转载请标明出处,如果本文中有什么偏差的地方也
希望大家和我交流让我及时纠正。
import ist;
public class ReflectionDemo1 {
private final static String LIST_STRING="ist"; //
动态加载ist的类路径
@SuppressWarnings("unchecked")
public static void main(String[] args) {
try {
Class> clazz=e(LIST_STRING);
//通过反射获取运行时的Class
ArrayList
tance(); //通过newInstance方法获取Object
("hello");
}
}
}
n(()+":"+(0));
tackTrace();
// TODO Auto-generated catch block
tackTrace();
// TODO Auto-generated catch block
tackTrace();
} catch (ClassNotFoundException e) {
} catch (InstantiationException e) {
} catch (IllegalAccessException e) {
执行结果为:
1:hello
通过上面的代码我们可以总结出来使用Reflection大致需要如下的几步:
获取目标对象的Class对象;
调用Class对象内省方法获取目标对类成员信息;
访问目标类的成员属性;
1.2解析类的结构
通过第一步的操作,我们获取了目标对象的class之后就可以解析出来class对应的内部
结构;别不多说直接上代码,来看看如何解析出来目标对象;
我们定义一个Teacher类
package ;
public class Teacher {
private String username;
private int age;
汪文君 QQ:532500648,属于个人劳动成果,如需转载请标明出处,如果本文中有什么偏差的地方也
希望大家和我交流让我及时纠正。


发布评论