通俗易懂理解Java中的反射机制【Java反射】

您所在的位置:网站首页 java中什么叫反射 通俗易懂理解Java中的反射机制【Java反射】

通俗易懂理解Java中的反射机制【Java反射】

2024-07-14 16:16| 来源: 网络整理| 查看: 265

概述

反射是框架设计的灵魂,框架是半成品的软件。只有理解了反射,才能理解框架。

反射机制:将类的各个组成部件封装为其他对象。 在这里插入图片描述

反射的好处

可以在程序运行的过程中,操作这些对象。

例如:IDEA在你敲代码时会给你提示,本质就是用到了反射,

在这里插入图片描述

可以解耦,降低程序的耦合性,提高程序的可扩展性。 反射相关API的操作

Java之中,一切皆对象,哪怕是一个类的变量、方法也都是一种对象。

Class对象的获取方式

共有三种方式,分别对应上述三个阶段

源代码阶段

Class.forName(“全类名(包名+类型)”):将字节码文件加载进内存,返回Class对象。多用于配置文件中,读取文件,加载类。

类对象阶段

类名.class:字节码文件已加载进内存,通过类名的class属性来获取。多用于参数的传递。

运行时阶段

对象.getClass():已经有具体的对象,getClass方法在Object中,任何类都有。多用于对象获取字节码的方式。

在这里插入图片描述

同一个字节码文件在一次程序运行过程中,只会被加载到内存一次,无论通过哪一种方式获取的Class对象都是同一个对象。

Class对象功能

Field、Constructor、Method不带Declared只能获取public的,带Declared可以获取全部限定名的,都可以使用暴力反射

获取功能

获取成员变量们 在这里插入图片描述 Field的get和set方法可以直接获取和修改成员变量的值,加上setAccessible(true)暴力反射可以忽略权限

获取构造方法们 在这里插入图片描述

构造器用来创建对象,newInstance方法用来创建对象。

获取成员方法们

![](https://img-blog.csdnimg.cn/20210110195828792.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDk3MzA0Nzkx,size_16,color_FFFFFF,t_70)

获取类名 在这里插入图片描述 反射实例

例:写一个框架,可以创建任意类的对象,并且执行其中的任意方法,框架一旦写好,就不能再修改。

在这里插入图片描述

实现:

配置文件反射

步骤:

将需要创建对象的全类目和需要执行方法定义在配置文件中

在程序中加载配置文件

使用反射技术加载文件进内存

创建对象

获取方法对象

执行方法

在这里插入图片描述

为什么推荐使用配置文件?

因为配置文件仅仅是一个物理文件,随便改没有任何影响。而如果每次都改代码,就每次都要重新编译,在项目庞大的情况下耗时巨大。

个人理解

我们通常思维是先定义类,再写类中的变量、方法,然后new出一个实例,再调用、执行…

而反射则是先给定用哪个类,然后倒回去…这有利于我们实现对多种不同类的功能的操作。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3