没有合适的资源?快使用搜索试试~ 我知道了~
首页Java反射机制的使用和学习方法
Java反射机制的使用和学习方法
5星 · 超过95%的资源 需积分: 35 39 下载量 85 浏览量
更新于2023-03-16
评论
收藏 230KB DOC 举报
Java反射机制的使用和学习方法,从底层阐述Java反射机制的原理,让我们更加了解Java反射
资源详情
资源评论
资源推荐
Java 的反射机制是 Java 特性之一,反射机制是构建框架技术的基础所在。灵活
掌握 Java 反射机制,对大家以后学习框架技术有很大的帮助。
那么什么是 Java 的反射呢?
大家都知道,要让 Java 程序能够运行,那么就得让 Java 类要被 Java 虚拟机
加载。Java 类如果不被 Java 虚拟机加载,是不能正常运行的。现在我们运行的
所有的程序都是在编译期的时候就已经知道了你所需要的那个类的已经被加载
了。
Java 的反射机制是在编译并不确定是哪个类被加载了,而是在程序运行的
时候才加载、探知、自审。使用在编译期并不知道的类。这样的特点就是反射。
那么 Java 反射有什么作用呢?
假如我们有两个程序员,一个程序员在写程序的时候,需要使用第二个程
序员所写的类,但第二个程序员并没完成他所写的类。那么第一个程序员的代
码能否通过编译呢?这是不能通过编译的。利用 Java 反射的机制,就可以让第
一个程序员在没有得到第二个程序员所写的类的时候,来完成自身代码的编译。
Java 的反射机制它知道类的基本结构,这种对 Java 类结构探知的能力,我
们称为 Java 类的“自审”。大家都用过 Jcreator 和 eclipse。当我们构建出一个对象
的时候,去调用该对象的方法和属性的时候。一按点,编译工具就会自动的把
该对象能够使用的所有的方法和属性全部都列出来,供用户进行选择。这就是
利用了 Java 反射的原理,是对我们创建对象的探知、自审。
Class 类
要正确使用 Java 反射机制就得使用 java.lang.Class 这个类。它是 Java 反射机
制的起源。当一个类被加载以后,Java 虚拟机就会自动产生一个 Class 对象。通
过这个 Class 对象我们就能获得加载到虚拟机当中这个 Class 对象对应的方法、
成员以及构造方法的声明和定义等信息。
反射 API
反射 API 用于反应在当前 Java 虚拟机中的类、接口或者对象信息
功能
—获取一个对象的类信息.
—获取一个类的访问修饰符、成员、方法、构造方法以及超类的信息.
—检获属于一个接口的常量和方法声明.
—创建一个直到程序运行期间才知道名字的类的实例.
—获取并设置一个对象的成员,甚至这个成员的名字是
在程序运行期间才知道.
—检测一个在运行期间才知道名字的对象的方法
利用 Java 反射机制我们可以很灵活的对已经加载到 Java 虚拟机当中的类信
息进行检测。当然这种检测在对运行的性能上会有些减弱,所以什么时候使用
反射,就要靠业务的需求、大小,以及经验的积累来决定。
那么如何利用反射 API 在运行的时候知道一个类的信息呢?
代码示例:
import java.lang.reect.Field;
import java.lang.reect.Method;
import javax.swing.JOptionPane;
/**
*本类用于测试反射 API,利用用户输入类的全路径,
*找到该类所有的成员方法和成员属性
*/
public class MyTest {
/**
*构造方法
*/
public MyTest(){
String classInfo=JOptionPane.showInputDialog(null,"输入类全
路径");//要求用户输入类的全路径
try {
Class cla=Class.forName(classInfo);//根据类的全路径进行类
加载,返回该类的Class对象
Method[] method=cla.getDeclaredMethods();//利用得到的
Class对象的自审,返回方法对象集合
for(Method me:method){//遍历该类方法的集合
System.out.println(me.toString());//打印方法信息
}
System.out.println("********");
Field[] 0eld=cla.getDeclaredFields();//利用得到的Class对象
的自审,返回属性对象集合
for(Field me:0eld){ //遍历该类属性的集合
System.out.println(me.toString());//打印属性信息
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new MyTest();
}
}
运行的时候,我们输入 javax.swing.JFrame,那么运行结果如下:
public void javax.swing.JFrame.remove(java.awt.Component)
public void javax.swing.JFrame.update(java.awt.Graphics)
…………
********
public static 0nal int javax.swing.JFrame.EXIT_ON_CLOSE
private int javax.swing.JFrame.defaultCloseOperation
…………
大家可以发现,类的全路径是在程序运行的时候,由用户输入的。所以虚
拟机事先并不知道所要加载类的信息,这就是利用反射机制来对用户输入的类
全路径来对类自身的一个自审。从而探知该类所拥有的方法和属性。
通过上面代码,大家可以知道编译工具为什么能够一按点就能列出用户当
前对象的属性和方法了。它是先获得用户输入对象的字符串,然后利用反射原
理来对这样的类进行自审,从而列出该类的方法和属性。
使用反射机制的步骤:
导入 java.lang.relfect 包
遵循三个步骤
第一步是获得你想操作的类的 java.lang.Class 对象
第二步是调用诸如 getDeclaredMethods 的方法
第三步使用 反射 API 来操作这些信息
获得 Class 对象的方法
如果一个类的实例已经得到,你可以使用
【Class c = 对象名.getClass(); 】
例: TextField t = new TextField();
Class c = t.getClass();
Class s = c.getSuperclass();
剩余12页未读,继续阅读
Sammie
- 粉丝: 10
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- ExcelVBA中的Range和Cells用法说明.pdf
- 基于单片机的电梯控制模型设计.doc
- 主成分分析和因子分析.pptx
- 共享笔记服务系统论文.doc
- 基于数据治理体系的数据中台实践分享.pptx
- 变压器的铭牌和额定值.pptx
- 计算机网络课程设计报告--用winsock设计Ping应用程序.doc
- 高电压技术课件:第03章 液体和固体介质的电气特性.pdf
- Oracle商务智能精华介绍.pptx
- 基于单片机的输液滴速控制系统设计文档.doc
- dw考试题 5套.pdf
- 学生档案管理系统详细设计说明书.doc
- 操作系统PPT课件.pptx
- 智慧路边停车管理系统方案.pptx
- 【企业内控系列】企业内部控制之人力资源管理控制(17页).doc
- 温度传感器分类与特点.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论6