我正在尝试获取对象的第一个父级的字段和值.我目前的代码是这样的:
Class<? extends Object> cls = obj.getClass();
Field[] fields = cls.getDeclaredFields();
for ( Field field : fields )
{
String fieldName = field.getName();
String fieldValue = field.get(obj);
}
Run Code Online (Sandbox Code Playgroud)
我的类结构与此类似:
class A
{
int x;
}
class B extends A
{
int y;
}
class C extends B
{
int z;
}
Run Code Online (Sandbox Code Playgroud)
现在,我将C对象传递给方法,我希望从C和B获取所有字段,但不是从A获取.有没有办法做到这一点(使用反射,我不想实现其他方法)?
创建一个方法
public static void printFieldsFor(Class cls, Object obj) {
Field[] fields = cls.getDeclaredFields();
for ( Field field : fields ) {
String fieldName = field.getName();
String fieldValue = field.get(obj);
}
}
printFieldsFor(object.getClass(), obj);
printFieldsFor(object.getClass().getSuperclass(), obj);
Run Code Online (Sandbox Code Playgroud)
或使用循环
for(Class cls = object.getClass();
cls!=null && cls!=A.class;
cls = cls.getSuperclass()) {
for(Field field : cls.getDeclaredFields()) {
String fieldName = field.getName();
String fieldValue = field.get(obj);
// do something with the field.
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16657 次 |
| 最近记录: |