反射

反射

反射库(reflection library)提供了一个非常丰富且精心设计的工具集,以便编写能够动态操纵java代码的程序。

能够分析类能力的程序称为反射(reflective)。反射可以用来:
    · 在运行中分析类的能力
    · 在运行中查看对象
    · 实现通用的数组操作代码
    · 利用Method对象,很想C++中的函数指针。

Class类
在程序运行期间,java运行时系统始终会为所有的对象维护一个被成为运行时的执行标识。这个信息跟踪着每一个对象所属的类。虚拟机利用运行时类型信息选择相应的方法执行。
通过专门的java类可以访问这些信息(这些信息被成为Class)。
Object类中的getClass()方法可以返回一个Class类型的实例。
Employ e;
......
Class cl = e.getClass();
常用的Class方法是getName。这个方法返回类的名字。
System.out.println(e.getClass().getName() + " " + e.getName());
还可以调用静态方法forName来获得类名对应的Class。
String className = "java.util.Date";
Class cl = Class.forName(className);
最后,如果T是任意的java类型,那么T.class将表示匹配的类对象。
对了,记得加try....catch捕获异常

利用反射分析类的能力(检查类的结构)
在java.lang.reflect包中有三个类Field、Method和Constructor分别用于描述类的域,方法和构造器。
这三个类都有一个getName方法,可以返回项目名称.
Field类有一个getType方法,返回描述类所属类型的Class对象.
三个类都有一个getModifiiers方法,返回一个整型数值,用不同位开关描述public,static等修饰符的使用状况.
还可以用java.lang.reflect包中的Modifier类中的isPublic,isPrivate,isFinal判断方法或构造器的修饰符.
Class类中的getField、getMethod和getConstructor分别返回类提供的public域,方法和构造器组.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值