JAVA 反射获取的属性是复合类型
发布网友
发布时间:2022-06-03 05:23
我来回答
共2个回答
热心网友
时间:2022-05-19 13:08
你的意思就是要获取内部类的属性和方法喽?
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();
热心网友
时间:2022-05-19 14:26
搞不懂,不都是一样取的吗?感觉没什么不同啊,比如:
class Person{
public String name;
public Address addr;
}
创建实例:Person per = new Person();
取属性:Field faddr = per.getClass.getField("addr");
取值:Address vaddr = (Address)faddr.get(per);