通过反射获得对象的值

  在工作中,难免会通过反射去获得对象某个属性的值,从而进行下一步的操作。如下反射工具实现了这样的功能。

方法一:通过对象反射获取

package com.bijian.test;

import java.lang.reflect.Field;

/**
 * 反射获取对象属性值工具类
 */
public class ParamsReflectUtil {

	public static Object getFieldValue(Object obj, String field) {

		Class<?> claz = obj.getClass();
		Field f = null;
		Object fieldValue = null;
		try {
			Field[] fields = claz.getDeclaredFields();
			for (int i = 0; i < fields.length; i++) {
				if (fields[i].getName().equals(field)) {
					f = claz.getDeclaredField(field);
					f.setAccessible(true);
					fieldValue = f.get(obj);
				}
			}
		} catch (Exception e) {
			System.out.println(e.getStackTrace());
		}
		return fieldValue;
	}
}

  调用实例:

String custNo = (String) ParamsReflectUtil.getFieldValue(request.getData(), "custNo");

  如果这里的request.getData()是一个json串,或者进一步,request.getData()是一个通用的json串,无法(或者穷举会比较多)一一将它映射成java对象,我们可以用json工具来获得,如下方法所示。

方法二:通过Json工具获得

import java.util.Map;
import java.util.TreeMap;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

/**
 * 属性(对象)值反射获取工具类
 */
public class ParamsReflectUtil {
    
    private final static Logger logger = LoggerFactory.getLogger(ParamsReflectUtil.class);
    
    public static Object getFieldValue(String jsonStr, String field) {
        
        JSONObject jsonObject = JSON.parseObject(jsonStr);
        Object fieldValue = null;
        for (Iterator iter = jsonObject.keySet().iterator(); iter.hasNext();) {
            String name = (String) iter.next();
            if(name.equals(field)) {
                fieldValue = jsonObject.get(name);
            }
        }
        return fieldValue;
    }
}

调用实例:

String custNo = (String) ParamsReflectUtil.getFieldValue(request.getData(), "custNo");

参考资料:http://blog.csdn.net/starryninglong/article/details/60468440

https://zhidao.baidu.com/question/1754507934238487268.html

猜你喜欢

转载自bijian1013.iteye.com/blog/2407729
今日推荐