obj = obj.getClass().getSuperclass().cast(obj);
该行不执行您期望的操作。强制转换an
Object并不会实际更改它,只是告诉编译器将其视为其他内容。
例如,您可以将a强制转换
List为a
Collection,但仍将保留a
List。
但是,通过超类循环访问字段可以很好地进行,而无需强制转换:
Class<?> current = yourClass;while(current.getSuperclass()!=null){ // we don't want to process Object.class // do something with current's fields current = current.getSuperclass();}顺便说一句,如果您有权访问Spring框架,则有一个方便的方法可以遍历一个类和所有超类的字段:(
另请参见我的先前回答:通过Java中的反射访问私有继承的字段)
ReflectionUtils.doWithFields(baseClass,FieldCallback)



