更好的表述这个问题的方式可能是:我能从一个对象中获得超类类型的非静态对象吗?
嗨,我处于这样一种情况,我可以访问扩展Foundation
的类House
(请注意类名称是假设的)。我有一个类型为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的类,所以我不能强制转换(Foundation)foundationObject
。
有解决办法吗?谢谢你的帮助。
更好的表述这个问题的方式可能是:我能从一个对象中获得超类类型的非静态对象吗?
尝试list.get(houseObject)
可访问性更改将级联到子类,因此该字段将直接从houseObject
访问