反思 - 在飞行中将对象投射到它未知的超类?

时间:2014-07-19 03:49:00

标签: java reflection private

您好我处于可以访问类House的情况,其中Foundation扩展(请注意类名称是假设的)。我有一个House类型的对象,我想得到设置为私有的字段Foundation.width。我想出了代码:

1.) Field list = houseObject.getClass().getSuperclass()
                                     .getDeclaredField("width");
2.) list.setAccessible(true);
3.) this.width = (double)list.get(foundationObject);

问题在于第3行我无法访问foundationObject,我可以访问houseObject,因为我在编译时并不真正知道基础类,所以我无法转换(Foundation)foundationObject

有解决方案吗?谢谢你的帮助。

<小时/> 提出这个问题的更好方法也可能是:我可以从对象中获取超类的非静态对象吗?

1 个答案:

答案 0 :(得分:1)

尝试list.get(houseObject)辅助功能更改将级联到子类,因此可以直接从houseObject访问该字段。