diff --git a/scfs-api-core/src/main/java/com/czcb/scfs/api/core/util/ObjReflect.java b/scfs-api-core/src/main/java/com/czcb/scfs/api/core/util/ObjReflect.java index 46da48a..d3ec8c6 100644 --- a/scfs-api-core/src/main/java/com/czcb/scfs/api/core/util/ObjReflect.java +++ b/scfs-api-core/src/main/java/com/czcb/scfs/api/core/util/ObjReflect.java @@ -11,13 +11,21 @@ public class ObjReflect { } public static Object getValue(Object obj, String fieldName) { - try { - Field field = obj.getClass().getDeclaredField(fieldName); - field.setAccessible(true); - return field.get(obj); - } catch (Exception e) { - return null; + Class clazz = obj.getClass(); + while (clazz != null) { + try { + Field field = clazz.getDeclaredField(fieldName); + field.setAccessible(true); + return field.get(obj); + } catch (NoSuchFieldException e) { + // 未声明该字段继续向上查父类 + clazz = clazz.getSuperclass(); + } catch (Exception e) { + return null; + } } + // 整个链路没有该字段返回null + return null; } public static String getValueAsString(Object obj, String fieldName) {