public static List<Field> getAllFieldsNoPrimitiveFilter(Class type) { List<Field> fields = new ArrayList<>(); Field[] declaredFields = type.getDeclaredFields(); if (type.getSuperclass() != null) { fields.addAll(getAllFields(type.getSuperclass())); } for (Field f : declaredFields) { if (Modifier.isStatic(f.getModifiers()) || Modifier.isTransient(f.getModifiers())) { continue; } fields.add(f); } return fields; }
private Accessors.FieldAccessor accessor(Method method) { PropertyDescriptor descriptor = BeanUtils.findPropertyForMethod(method); Class<?> declaringClass = method.getDeclaringClass(); Field field = Fields.getFieldByName(declaringClass, descriptor.getName()); return Accessors.newAccessor(field); }
/** * Returns fields for a {@link Class} and all its super types. Ignores transient or static fields. Fields from the top of the object hierarchy will be added first * * @param type * @return list of valid fields */ public static List<Field> getAllFields(Class type) { List<Field> fields = new ArrayList<>(); Field[] declaredFields = type.getDeclaredFields(); if (type.getSuperclass() != null) { fields.addAll(getAllFields(type.getSuperclass())); } for (Field f : declaredFields) { if (Modifier.isStatic(f.getModifiers()) || Modifier.isTransient(f.getModifiers())) { continue; } fields.add(f); } return fields; }
for (Field subField : Fields.getAllFields(jt.getRawClass())) { Type subType = subField.getGenericType(); TypeRef subRef = buildTypeRef(subType, typeBindings, subField);