Java反射得到属性和属性的值和设置属性的值

  1. 云栖社区>
  2. 博客>
  3. 正文

Java反射得到属性和属性的值和设置属性的值

心月狐 2018-09-25 15:24:59 浏览1513
展开阅读全文
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

/**
 * 〈一句话功能简述〉<br> 
 * 〈反射获取值〉
 *
 * @author zhoukai7
 * @create 7/29/18
 * @since 1.0.0
 */
public class ReflecFetchAttr {
    /**
     * 得到属性值
     *
     * @param obj
     */
    public static Map<String, Object> getAttributeValue(Object obj) {

        Map<String, Object> map = new HashMap<String, Object>();
        Class cls = obj.getClass();
        Field[] fields = cls.getDeclaredFields();
        for (int i = 0; i < fields.length; i++) {
            try {
                // 得到属性
                Field field = fields[i];
                // 允许访问私有属性
                field.setAccessible(true);
                // 获取属性
                String name = field.getName();
                // 获取属性值
                Object value = field.get(obj);
                map.put(name, value);

            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }

        return map;
    }

    /**
     * 得到属性值
     *
     * @param obj
     */
    public static Map<String, Object> getAttributeValueSide(Object obj) {

        Map<String, Object> map = new HashMap<String, Object>();
        Class cls = obj.getClass();
        Field[] fields = cls.getDeclaredFields();
        for (int i = 0; i < fields.length; i++) {
            try {
                // 得到属性
                Field field = fields[i];
                // 允许访问私有属性
                field.setAccessible(true);
                // 获取属性
                String name = field.getName();
                // 获取属性值
                Object value = field.get(obj);
                map.put(String.valueOf(value), name);

            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }

        return map;
    }
}

网友评论

登录后评论
0/500
评论
心月狐
+ 关注