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 list=(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,属于个人劳动成果,如需转载请标明出处,如果本文中有什么偏差的地方也

希望大家和我交流让我及时纠正。

本文发布于:2024-03-28,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:反射加载对象机制

发布评论

评论列表(有0条评论)
    福州电脑网_福州电脑维修_福州电脑之家_福州iThome

    福州电脑网_福州电脑维修_福州电脑之家_福州iThome

    福州电脑维修网(fzithome.com)专业的电脑维修,笔记本维修,上门维修各种电脑,笔记本,平板等,快速上门.电脑知识频道内容覆盖:计算机资讯,电脑基础应用知识,各种电脑故障维修学习,电脑外设产品维修维护,病毒,软件,硬件,常识.