提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
获取所有字段并通过反射返回地图
//package com.nowjava; import java.lang.reflect.Field; import java.lang.reflect.Method;/*来 自 nowjava - 时代Java*/ import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] argv) throws Exception { /** from * 时代Java公众号 **/ Class clazz = String.class; System.out.println(getFieldMap(clazz)); } /** * Must be non-transient. * Must be non-final. * Will be set accessible if possible. */ public static Map<String, Field> getFieldMap(Class<?> clazz) { Map<String, Field> ret = new HashMap<String, Field>(); for (Field field : findAllFields(clazz)) { if (Modifier.isTransient(field.getModifiers())) continue; if (Modifier.isFinal(field.getModifiers())) continue; makeAccessible(field); ret.put(field.getName(), field); } return ret; } public static List<Field> findAllFields(Class<?> clazz) { List<Field> fields = new ArrayList<Field>(); for (Class<?> c = clazz; c != null; c = c.getSuperclass()) { fields.addAll(Arrays.asList(c.getDeclaredFields())); } return fields; } public static void makeAccessible(Field field) { if ((!Modifier.isPublic(field.getModifiers()) || !Modifier.isPublic(field.getDeclaringClass() .getModifiers()) || Modifier.isFinal(field .getModifiers())) &&