深入理解反射机制 青旅半醒 2022-12-04 02:27 205阅读 0赞 ### Java代码在计算机中经历的三个阶段 ### ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NneDU2NjY2NjY_size_16_color_FFFFFF_t_70_pic_center] **阶段一**:Source源代码阶段。意味着经过编译器编译后生成的.class文件还没有加载进内存,还是在硬盘上。 现在字节码要想变成对象,而对象是内存里边,也就是说需要把字节码加载进内存后才能够有这个对象。 **阶段二**:Class类对象阶段。该阶段需要把字节码文件加载进内存的,有一个东西,能够把字节码文件加载进内存,这个东西称为类加载器(对应着Java里的一个对象,ClassLoader)。这个类加载就可以把Person.class文件加载到内存里边。 `那在内存里边怎么描述Person.class字节码文件呢?` 在Java里边万物皆对象,所以在内存里边有个对象来描述这个字节码文件,这个对象就是Class类对象(在Java里边有个Class类,这个Class类就是用来描述所有字节码文件的共同特征和行为)。 不管是什么字节码文件,里边都有成员变量、构造方法、普通方法、成员方法等。因此Class类对象里边有三个重要的部分,第一、所有成员变量,第二、构造方法,第三、成员方法。这三个部分都封装成其他的对象,如成员变量封装为Field对象,构造方法封装为Constructor对象,成员方法封装为Method对象。一个.class字节码文件里边可能有多个成员变量、构造方法或成员方法,所以分别用Field\[\] feilds数组来描述所有的成员变量,构造方法跟成员方法也一样。那这就是Class类对象。后面通过Class类对象的一些行为就可以创建真正的Person对象。 **阶段三**:Runtime运行时阶段。该通过new Person()生成的对象去调用该对象的方法。 知道这个三个阶段后,再回来看反射的概念。 摘自百度百科 > Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。 摘自Java黑马57期学习笔记 > 反射:将类的各个组成部分封装为其他对象,这就是反射机制。 * 好处: 1. 可以在程序运行过程中,操作这些对象。 2. 可以解耦,提高程序的可扩展性。 再来理解下,`可以在程序运行过程中,操作这些对象`这句话。 应用反射的例子 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NneDU2NjY2NjY_size_16_color_FFFFFF_t_70_pic_center 1] 这是IDEA中写的一小段代码,定义一个字符串s,IDEA本身就是个程序,而且是用Java开发的应用程序。那么现在定义的字符串`s.`操作后,会有一大堆的方法提示,那这些方法从哪儿来的,怎么知道有这些方法呢!这其实就是内部用到了反射机制。 IDEA是这样做的,你定义了字符串s,那IDEA会把字符串这个字节码文件加载进内存,在内存中有Class类对象,Class类对象已经把所有的方法抽取出来了,封装为Method对象,然后把所有方法放到Method\[\] method数组中,那将来要提示,我们只需要将Method数组里的每一个成员拿出来展示到列表里就可以了。IDEA这个程序一直是在运行的状态,在运行的过程中我们能知道这个字段的对象里边有哪些方法。 通过上述的过程,就有个较为直接地感受到反射机制带来的应用了。 —end [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NneDU2NjY2NjY_size_16_color_FFFFFF_t_70_pic_center]: /images/20221123/c61dee1c555a4f2a8151ed0dc6b872df.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NneDU2NjY2NjY_size_16_color_FFFFFF_t_70_pic_center 1]: /images/20221123/a3ae40d717a84318a101822fe9c68922.png
相关 Java反射机制深入理解与实战 Java反射机制是Java语言提供的一种能力,允许程序在运行时检查类、接口、方法、字段等任何信息,并动态地调用这些方法或访问这些字段。 理解和掌握反射机制主要有以下几个方面: 亦凉/ 2024年09月14日 22:30/ 0 赞/ 12 阅读
相关 Java反射机制深入理解及常见问题 Java反射机制是一种强大的工具,它允许我们在运行时检查类、方法、字段等信息。以下是反射机制的深入理解和一些常见问题: 1. 概念理解: - 类:Java中的一个对象都 Dear 丶/ 2024年09月11日 08:45/ 0 赞/ 25 阅读
相关 深入理解Java反射机制及其常见应用 Java反射机制是Java语言特性之一,它允许程序在运行时动态地获取类的信息,并可以操作对象。 1. **什么是反射**: 反射就是在运行状态中,对于任何对象都能够获取 痛定思痛。/ 2024年09月10日 07:45/ 0 赞/ 22 阅读
相关 深入理解Java中的反射机制 Java的反射机制是一种在运行时检查类、接口、方法、构造器等对象信息并动态调用它们的方法的能力。 以下是对反射机制的一些深入理解: 1. 类和对象:反射可以获取任意一个类的 我会带着你远行/ 2024年09月04日 08:00/ 0 赞/ 24 阅读
相关 深入理解反射机制 Java代码在计算机中经历的三个阶段 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR 青旅半醒/ 2022年12月04日 02:27/ 0 赞/ 206 阅读
相关 总结: 十分钟深入理解Java反射机制 首先先看一下Java反射的概念 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取 叁歲伎倆/ 2022年05月28日 05:23/ 0 赞/ 185 阅读
相关 深入理解java反射机制 (转自:[https://blog.csdn.net/u012585964/article/details/52011138][https_blog.csdn.net_u012 悠悠/ 2022年05月24日 10:08/ 0 赞/ 253 阅读
相关 深入理解java的反射机制(转载) 原文路径:[http://blog.51cto.com/4247649/2109128][http_blog.51cto.com_4247649_2109128] 今天将从以 Love The Way You Lie/ 2022年05月04日 15:28/ 0 赞/ 229 阅读
还没有评论,来说两句吧...