没有合适的资源?快使用搜索试试~ 我知道了~
首页JAVA反射机制原理及代码
JAVA反射机制原理及代码
需积分: 35 11 下载量 125 浏览量
更新于2023-06-25
评论 3
收藏 135KB DOCX 举报
java反射原理,反射机制原理,以及java反射机制实现实例!希望能给大家一点帮助!
资源详情
资源评论
资源推荐
在运行时,对一个 类,能否知道属性和方法;能否调用它的任意方法?
答案是可以的, 提供一种反射机制可以实现。
目录
什么是 的反射机制
中提供的
反射机制提供了什么功能
获取类的 对象
获取类的
获取类的
获取类的
新建类的实例
!"的函数
#
通过 对象
的方法 #
$ 调用类的函数
调用 %& 函数
' 设置(获取类的属性值
%& 属性
) 动态创建代理类
动态代理源码分析
* 反射 !"类型源代码分
析
+ 反射原理分析
文件结构
加载类对象,对反射的支
持
, 反射的应用
一、什么是 JAVA 的反射机制
& 反射是 & 被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运
行时透过 取得任何一个已知名称的 的内部信息,包括其
-.(诸如 %/0等)、%(例如 1/2)、实现之
3(例如 /),也包括 . 和 - 的所有信息,并可于运行时
改变 . 内容或唤起 -。
& 反射机制容许程序在运行时加载、探知、使用编译期间完全未知的 。
换言之,& 可以加载一个运行时才得知名称的 ,获得其完整结构。
二、JDK 中提供的 Reection API
& 反射相关的 在包 2&4 中,)5 的 包如下图:
-/ 接口 该接口可以获取有关类成员(域或者方法)后者构造函数的信息。
/1/2 类 该类是域6.7对象、方法6-7对象、构造函数67对象的基础类。它提供了将反射的对象标记为在使用时取消默认
言访问控制检查的能力。
8 类 该类提供动态地生成和访问 数组的方法。
类 提供一个类的构造函数的信息以及访问类的构造函数的接口。
类 提供一个类的域的信息以及访问类的域的接口。
类 提供一个类的方法的信息以及访问类的方法的接口。
. 类 提供了 方法和常量,对类和成员访问修饰符进行解码。
98 类
提供动态地生成代理类和类实例的静态方法。
三、JAVA 反射机制提供了什么功能
& 反射机制提供如下功能:
在运行时判断任意一个对象所属的类
在运行时构造任意一个类的对象
在运行时判段任意一个类所具有的成员变量和方法
在运行时调用任一个对象的方法
在运行时创建新类对象
在使用 & 的反射功能时,基本首先都要获取类的 对象,再通过 对象获取
其他的对象。
这里首先定义用于测试的类:
#;
$
'
)
*
+
,
5
$
'
)
*
+
,
5
$
'
)
*
+
,
5
$
'
)
*
+
,
!8%<
%/%/=
%/>4%/>4=
%&%&=
%/!8%67<
?46@3@7=
A
!8%640>447<
%/B4=
%/>4B4=
?46@#%-@7=
A
%/&6&7<
%&B&=
A
%/467<
%&=
A
%&&?46>4-47<
>8-%6@!8%:@C-47=
A
A
D9!8%9!8%<
%/%/D9=
%/>4%/>4D9=
%&%&D9=
%/D9!8%67<
?46@3@7=
A
D9!8%640>447<
%/D9B4=
$5
$
$
$
$$
$'
$)
$*
$+
$,
'5
'
'
'
'$
''
%/>4D9B4=
?46@#%-@7=
A
%/&D96.*7<
%&D9B.*=
A
%/4D967<
%&D9=
A
%&&?46>4-47<
>8-%6@D9!8%:@C-47=
A
A
1、获取类的 Class 对象
类的实例表示正在运行的 &应用程序中的类和接口。获取类的 对象有多
种方式:
调用 4
E&B=
;"!8%B&467=
>8-%6!8%7=
输出:2&4E
运用语法
;"!8%$BE=
>8-%6!8%$7=
输出:2&4E
运用 -
3F-67
;"!8%'B3F-6@2&4E@7=
>8-%6!8%'7=
输出:2&4E
运用 %-&#%%
的 !GD语法
这里返回的是原生类型,和
E 返回的不同
;"!8%BE!GD=
>8-%6!8%7=
输出:/
2、获取类的 Fields
可以通过反射机制得到某个类的某个属性,然后改变对应于这个类的某个实例的该属性值。
的 !"类提供了几个方法获取类的属性。
%/
46>4-7
返回一个 对象,它反映此 对象所表示的类或接口的指定公共成员字段
%/HI467
返回一个包含某些 对象的数组,这些对象反映此 对象所表示的类或接口的所有可访问公共字段
%/
46>4
-7
返回一个 对象,该对象反映此 对象所表示的类或接口的指定已声明字段
%/HI
467
返回 对象的一个数组,这些对象反映此 对象所表示的类或接口所声明的所有字段
#;
$
'
)
*
+
,
5
$
'
)
*
;"!8%B
D9!8%=
((使用 4 获取属性
HI.B!8%467=
363:.7
<
>8-%637=
A
>8-%67=
((使用 4 获取属性
.B
!8%467=
363:.7
<
>8-%637=
A
输出:
%/-J8D9!8%%/D9
%/2&4>4-J8D9!8%%/>4D9
%/-J8!8%%/
%/2&4>4-J8!8%%/>4
剩余28页未读,继续阅读
wzyun21
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0