//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())) && !field.isAccessible()) {
field.setAccessible(true);
}
/**代码未完, 请加载全部代码(NowJava.com).**/
本文系作者在时代Java发表,未经许可,不得转载。如有侵权,请联系nowjava@qq.com删除。