java 反射类中属性的属性 高手赐教

来源:百度知道 编辑:UC知道 时间:2024/05/26 20:48:30
如:class B{
public String str;
}
class A{
public B b;
}
现在我要通过A的class对象 反射出A属性B中的str 应该怎样做呢?
跪求高手指教。。。。。
Field b = A.class.getField("b") 这样可以获得A类中申明的B属性所对应的Field对象
可现在我就知道 有一个名为 “str”的属性 而不知道str是在在A类中直接声明的还是在A中的属性中声明的,就比如上面写的str是在的b属性的类B中被声明的一样 不要告诉我这样: Field b = A.class.getField("b"); B b = (B)b.get(new A()); return b.str;
现在关键就在 我不知道 str就是在B中的。。。。。。
需求是这样的:页面传一个属性名b过来 我要从A a中 反射出a的b过来 可是b有可能不是直接在a中声明的 所以不能直接a.b 究竟该怎样处理呢?还请接着赐教

yzgfbj 说的挺对的。看起来只有这一种办法了。

总的来讲,你现在的要求对str的定义是很不准确的,这在代码中可能会出现意想不到的情况,比如:同时有两个str定义怎么办?
class A
{
public B b1 ;
public B b2 ;
}

而且,你即使取出来B.str的FiledInfo,也仍然不好定位具体的对象,是采用A.b还是别的对象阿?

最后,建议这种处理还是要用规范的做法,或者采用已有的标准,如:OGNL,能解决你的很多问题而且语法更强。

你意思是两个类,一个类继承另一类的方法属性啊,也就是可以调用啊,那你直接用extends 就行啊

没看明白

根据你传的属性做一个递归,先在自己本身找。再往a的父类或者属性里找。只要找到,则停止遍历。
不知道你是不是这个意思