public static Field[] getSupportedFields(final Class clazz) { return getSupportedFields(clazz, Object.class); }
/** * Inspects fields and returns map of {@link FieldDescriptor field descriptors}. */ protected HashMap<String, FieldDescriptor> inspectFields() { boolean scanAccessible = classDescriptor.isScanAccessible(); Class type = classDescriptor.getType(); Field[] fields = scanAccessible ? ClassUtil.getAccessibleFields(type) : ClassUtil.getSupportedFields(type); HashMap<String, FieldDescriptor> map = new HashMap<>(fields.length); for (Field field : fields) { String fieldName = field.getName(); if (fieldName.equals("serialVersionUID")) { continue; } map.put(fieldName, createFieldDescriptor(field)); } return map; }
@Test void testAccessibleA() { Method[] ms = ClassUtil.getAccessibleMethods(A.class, null); assertEquals(4 + 11, ms.length); // there are 11 accessible Object methods (9 public + 2 protected) ms = ClassUtil.getAccessibleMethods(A.class); assertEquals(4, ms.length); ms = A.class.getMethods(); assertEquals(1 + 9, ms.length); // there are 9 public Object methods ms = A.class.getDeclaredMethods(); assertEquals(4, ms.length); ms = ClassUtil.getSupportedMethods(A.class, null); assertEquals(4 + 12, ms.length); // there are 12 total Object methods (9 public + 2 protected + 1 private) ms = ClassUtil.getSupportedMethods(A.class); assertEquals(4, ms.length); Field[] fs = ClassUtil.getAccessibleFields(A.class); assertEquals(4, fs.length); fs = A.class.getFields(); assertEquals(1, fs.length); fs = A.class.getDeclaredFields(); assertEquals(4, fs.length); fs = ClassUtil.getSupportedFields(A.class); assertEquals(4, fs.length); }
@Test void testAccessibleB() { Method[] ms = ClassUtil.getAccessibleMethods(B.class, null); assertEquals(3 + 11, ms.length); ms = ClassUtil.getAccessibleMethods(B.class); assertEquals(3, ms.length); ms = B.class.getMethods(); assertEquals(1 + 9, ms.length); ms = B.class.getDeclaredMethods(); assertEquals(0, ms.length); ms = ClassUtil.getSupportedMethods(B.class, null); assertEquals(4 + 12, ms.length); ms = ClassUtil.getSupportedMethods(B.class); assertEquals(4, ms.length); Field[] fs = ClassUtil.getAccessibleFields(B.class); assertEquals(3, fs.length); fs = B.class.getFields(); assertEquals(1, fs.length); fs = B.class.getDeclaredFields(); assertEquals(0, fs.length); fs = ClassUtil.getSupportedFields(B.class); assertEquals(4, fs.length); }
@Test void testAccessibleD() { Method[] ms = ClassUtil.getAccessibleMethods(D.class, null); assertEquals(3 + 11, ms.length); ms = ClassUtil.getAccessibleMethods(D.class); assertEquals(3, ms.length); ms = D.class.getMethods(); assertEquals(2 + 9, ms.length); ms = D.class.getDeclaredMethods(); assertEquals(0, ms.length); ms = ClassUtil.getSupportedMethods(D.class, null); assertEquals(5 + 12, ms.length); ms = ClassUtil.getSupportedMethods(D.class); assertEquals(5, ms.length); Field[] fs = ClassUtil.getAccessibleFields(D.class); assertEquals(3, fs.length); fs = D.class.getFields(); assertEquals(3, fs.length); fs = D.class.getDeclaredFields(); assertEquals(0, fs.length); fs = ClassUtil.getSupportedFields(D.class); assertEquals(5, fs.length); }
@Test void testAccessibleE() { Method[] ms = ClassUtil.getAccessibleMethods(E.class, null); assertEquals(5 + 11, ms.length); ms = ClassUtil.getAccessibleMethods(E.class); assertEquals(5, ms.length); ms = E.class.getMethods(); assertEquals(2 + 9, ms.length); ms = E.class.getDeclaredMethods(); assertEquals(4, ms.length); ms = ClassUtil.getSupportedMethods(E.class, null); assertEquals(5 + 12, ms.length); ms = ClassUtil.getSupportedMethods(E.class); assertEquals(5, ms.length); Field[] fs = ClassUtil.getAccessibleFields(E.class); assertEquals(5, fs.length); fs = E.class.getFields(); assertEquals(4, fs.length); fs = E.class.getDeclaredFields(); assertEquals(4, fs.length); fs = ClassUtil.getSupportedFields(E.class); assertEquals(5, fs.length); }
@Test void testAccessibleC() { Method[] ms = ClassUtil.getAccessibleMethods(C.class, null); assertEquals(5 + 11, ms.length); ms = ClassUtil.getAccessibleMethods(C.class); assertEquals(5, ms.length); ms = C.class.getMethods(); assertEquals(2 + 9, ms.length); ms = C.class.getDeclaredMethods(); assertEquals(5, ms.length); ms = ClassUtil.getSupportedMethods(C.class, null); assertEquals(5 + 12, ms.length); ms = ClassUtil.getSupportedMethods(C.class); assertEquals(5, ms.length); Field[] fs = ClassUtil.getAccessibleFields(C.class); assertEquals(5, fs.length); fs = C.class.getFields(); assertEquals(3, fs.length); fs = C.class.getDeclaredFields(); assertEquals(5, fs.length); fs = ClassUtil.getSupportedFields(C.class); assertEquals(5, fs.length); }
public static Field[] getSupportedFields(final Class clazz) { return getSupportedFields(clazz, Object.class); }
/** * Inspects fields and returns map of {@link FieldDescriptor field descriptors}. */ protected HashMap<String, FieldDescriptor> inspectFields() { boolean scanAccessible = classDescriptor.isScanAccessible(); Class type = classDescriptor.getType(); Field[] fields = scanAccessible ? ClassUtil.getAccessibleFields(type) : ClassUtil.getSupportedFields(type); HashMap<String, FieldDescriptor> map = new HashMap<>(fields.length); for (Field field : fields) { String fieldName = field.getName(); if (fieldName.equals("serialVersionUID")) { continue; } map.put(fieldName, createFieldDescriptor(field)); } return map; }