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^)/