JAVA 反射获取的属性是复合类型
我知道怎么用反射获取属性跟方法,但目前的类属性并不是简单的stringint,而是自定义的类,这个类里才是我需要的值,那我该如何取得?...
我知道怎么用反射获取属性跟方法,但目前的类属性并不是简单的string int,而是自定义的类,这个类里才是我需要的值,那我该如何取得?
展开
2个回答
展开全部
你的意思就是要获取内部类的属性和方法喽?
Class classes[]=clazz.getDeclaredClasses();//返回类包含的全部内部类
然后再进行处理呗。
Class clazz=XX.getClass();
Class classes[]=clazz.getDeclaredClasses();
for(Class c:classes){//对成员内部类进行反射
int i=c.getModifiers();
String s=Modifier.toString(i);
if(s.contains("static"))//静态内部类的处理
c.getConstructor().newInstance();
else//实例内部类的处理
c.getConstructor(ric.getClass()).newInstance(ric);
}
//由于匿名内部类没有构建器,因此无法创建实例,也无法直接访问其中的方法,但可以通过下面的方式巧秒的执行其中的方法或成员变量。
Runnable r=(Runnable)(clazz.getField("ta").get(ric));
r.run();
Class classes[]=clazz.getDeclaredClasses();//返回类包含的全部内部类
然后再进行处理呗。
Class clazz=XX.getClass();
Class classes[]=clazz.getDeclaredClasses();
for(Class c:classes){//对成员内部类进行反射
int i=c.getModifiers();
String s=Modifier.toString(i);
if(s.contains("static"))//静态内部类的处理
c.getConstructor().newInstance();
else//实例内部类的处理
c.getConstructor(ric.getClass()).newInstance(ric);
}
//由于匿名内部类没有构建器,因此无法创建实例,也无法直接访问其中的方法,但可以通过下面的方式巧秒的执行其中的方法或成员变量。
Runnable r=(Runnable)(clazz.getField("ta").get(ric));
r.run();
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
搞不懂,不都是一样取的吗?感觉没什么不同啊,比如:
class Person{
public String name;
public Address addr;
}
创建实例:Person per = new Person();
取属性:Field faddr = per.getClass.getField("addr");
取值:Address vaddr = (Address)faddr.get(per);
class Person{
public String name;
public Address addr;
}
创建实例:Person per = new Person();
取属性:Field faddr = per.getClass.getField("addr");
取值:Address vaddr = (Address)faddr.get(per);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询