JAVA中的反射机制

java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

java反射机制主要提供了以下功能: 在运行时分析类的能力,判断任意对象所属类,类中有哪些方法,有哪些成员变量;在运行时控查对象,比如,只写一个tostring()方法供所有的类使用;实现通用数组操作代码的功能。

1. 得到某个对象的属性

1 public object getproperty(object owner, string fieldname) throws exception {

2      class ownerclass = owner.getclass();

3

4      field field = ownerclass.getfield(fieldname);

5

6      object property = field.get(owner);

7

8      return property;

9 }

class ownerclass = owner.getclass():得到该对象的class。

field field = ownerclass.getfield(fieldname):通过class得到类声明的属性。

object property = field.get(owner):通过对象得到该属性的实例,如果这个属性是非公有的,这里会报illegalaccessexception。

2. 得到某个类的静态属性

1 public object getstaticproperty(string classname, string fieldname)

2              throws exception {

3      class ownerclass = class.forname(classname);

4

5      field field = ownerclass.getfield(fieldname);

6

7      object property = field.get(ownerclass);

8

9      return property;

10 }

class ownerclass = class.forname(classname) :首先得到这个类的class。

field field = ownerclass.getfield(fieldname):和上面一样,通过class得到类声明的属性。

object property = field.get(ownerclass) :这里和上面有些不同,因为该属性是静态的,所以直接从类的class里取。

3. 执行某对象的方法

1 public object invokemethod(object owner, string methodname, object[] args) throws exception {

2

3      class ownerclass = owner.getclass();

4

5      class[] argsclass = new class[args.length];

6

7      for (int i = 0, j = args.length; i 关注我收藏该文与我联系


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值