| | |
| | | /** |
| | | * 获取指定Class(及其SuperClass)的成员变量 |
| | | */ |
| | | public static Field[] getAllFields(Class<?> cls){ |
| | | public static Field[] getAllFields(Class<?> cls) { |
| | | return getAllFields(cls, null); |
| | | } |
| | | |
| | | /** |
| | | * 递归合并基类Field |
| | | */ |
| | | private static Field[] getAllFields(Class<?> cls, Field[] params){ |
| | | private static Field[] getAllFields(Class<?> cls, Field[] params) { |
| | | Field[] fields = (params == null) ? cls.getDeclaredFields() : params; |
| | | Class<?> superCls = cls.getSuperclass(); |
| | | if (superCls == null || superCls == Object.class){ |
| | | if (superCls == null || superCls == Object.class) { |
| | | return fields; |
| | | } |
| | | Field[] superClsFields = superCls.getDeclaredFields(); |
| | |
| | | /** |
| | | * 删除Field数组的静态成员变量 |
| | | */ |
| | | public static Field[] removeStaticField(Field[] params){ |
| | | public static Field[] removeStaticField(Field[] params) { |
| | | List<Field> fields = new ArrayList<>(Arrays.asList(params)); |
| | | if (fields.size() == 0){ |
| | | if (fields.size() == 0) { |
| | | return null; |
| | | } |
| | | for (int i = fields.size() - 1; i >= 0; i--) { |
| | | if(fields.get(i) == null){ |
| | | if (fields.get(i) == null) { |
| | | fields.remove(i); |
| | | } else if (Modifier.isStatic(fields.get(i).getModifiers())) { |
| | | fields.remove(i); |
| | |
| | | /** |
| | | * 递归获取成员变量对象(包含其基类) |
| | | */ |
| | | public static Field getField(Class<?> cls, String fieldName){ |
| | | public static Field getField(Class<?> cls, String fieldName) { |
| | | Field field; |
| | | try { |
| | | field = cls.getDeclaredField(fieldName); |
| | | } catch (NoSuchFieldException e) { |
| | | Class<?> superCls = cls.getSuperclass(); |
| | | if (superCls == null || superCls == Object.class){ |
| | | if (superCls == null || superCls == Object.class) { |
| | | return null; |
| | | } |
| | | return getField(superCls, fieldName); |