没有合适的资源?快使用搜索试试~ 我知道了~
JavaSE进阶-08-反射机制1
需积分: 0 0 下载量 131 浏览量
2022-08-03
19:38:14
上传
评论
收藏 356KB PDF 举报
温馨提示
试读
12页
1.1 反射的基本概念 1.2 Java 中的类反射 2.2.1 2.2.2
资源详情
资源评论
资源推荐
www.bjpowernode.com 1 / 12 Copyright©动力节点
1. 纲要
a) 反射的基本概念
b) Java 中的类反射
c) 安全性和反射
d) 反射的两个缺点
2. 内容
1.1 反射的基本概念
反射的概念是由 Smith 在 1982 年首次提出的,主要是指程序可以访问、检测和修改它本身状
态或行为的一种能力, 并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和
相关的语义。Java 中,反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在
运行时装配,无需在组件之间进行源代码链接。反射允许我们在编写与执行时,使我们的程序
代码能够接入装载到 JVM 中的类的内部信息,而不是源代码中选定的类协作的代码。这使反
射成为构建灵活的应用的主要工具。但需注意的是:如果使用不当,反射的成本很高。
1.2 Java 中的类反射
Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,
或者说“自审”或“自省”,并能直接操作程序的内部属性。Java 的这一能力在实际应用中也
许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或
者 C++ 中就没有办法在程序中获得函数定义相关的信息。
2.2.1 reflection 的工作机制
程序运行时,java 系统会一直对所有对象进行所谓的运行时类型识别,这项信息记录了每个对
象所属的类。通过专门的类可以访问这些信息。用来保存这些信息的类是 class 类,class 类为
编写可动态操纵的 java 代码程序提供了强大功能
构造 Class 对象有 3 种方式:
www.bjpowernode.com 2 / 12 Copyright©动力节点
1、Class.forName();
try {
// 构造 Class 对象的第一种方法
Class clazz = Class.forName("java.lang.String");
Object obj = clazz.newInstance();
System.out.println(obj);
} catch ( ClassNotFoundException e ) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch ( InstantiationException e) {
e.printStackTrace();
}
2、类.class
try {
// 构造 Class 对象的第二种方法
Class stringClass = String.class;
System.out.println(stringClass);
} catch ( ClassNotFoundException e ) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch ( InstantiationException e) {
e.printStackTrace();
}
3、Object.getClass()
try {
// 构造 Class 对象的第三种方法
www.bjpowernode.com 3 / 12 Copyright©动力节点
String s = "s";
stringClass = s.getClass();
System.out.println(stringClass);
} catch ( ClassNotFoundException e ) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch ( InstantiationException e) {
e.printStackTrace();
}
类对象的比较:
相同的类:
Class clazz = Class.forName("java.lang.String");
Class stringClass = String.class;
System.out.println("字符串类对象的比较=" +(clazz == stringClass));
不同的类:
Class stringClass = String.class;
Class intClass = int.class;
System.out.println("字 符 串 类 对 象 和 Int 类 对 象 的 比 较 =" +(stringClass ==
intClass));
2.2.2 Java 反射中的主要类和方法
软件包 java.lang.reflect
提供类和接口,以获取关于类和对象的反射信息。
剩余11页未读,继续阅读
yiyi分析亲密关系
- 粉丝: 22
- 资源: 321
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0