java反射

本文介绍了Java的反射机制,即能分析类能力的程序。可利用反射在运行中分析类、查看对象等。还阐述了Class类,它保存对象所属类的踪迹,可通过对象的getClass方法、静态方法forName及T.class获取Class对象,forName常和newInstance配合创建对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

反射:能够分析类能力的程序被称为反射(reflective)
可以利用反射机制:
.在运行中分析类的能力
.在运行中查看对象
.实现数组的操作代码
.利用Method对象


Class类:
在程序运行期间,Java运行时系统始终为所有对象维护一个被称为运行时的类型标识.
这个信息保存着每个对象所属的类踪迹.虚拟机利用运行时信息选择相应的方法执行
然而,可以通过专门的Java类访问这些信息,保存这些信息的类被称作Class
//
Employee e;
...
Class cl=e.getClass();
如果类在一个包中,包的名字也作为类名的一部分
import java.util.Date;


Date d=new Date();
Class cl=d.getClass();
String name=cl.getName();//name is set to "java.util.Date"


还可以调用静态方法forName或得类名对应的Class对象
String ClassName="java.util.Date";
Class cl=Class.forName(ClassName);
//这个方法只有在ClassName是类名或者接口名时才能够执行,
否则会抛出一个checked exception(已检查异常)


//异常两种形式:
未检查异常,检查异常,对于已检查异常,编译器将会检查是否提供了处理器。


获得Class类对象的第三中方法,如果T是Java类型,T.class将代表匹配的类对象
Class cl=Date.class;//if you import java.util.Date;
Class c2=int.class;
Class c3=Double.class;


通常将forName和newInstance配合起来使用,可以根据存储在一个字符串中的类名创建一个对象
String s="java.util.Date";
Object o=Class.forName(s).newInstance(); 
//newInstance可以迅速创建一个类的实例













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值