`

通过反射获得对象的值

阅读更多

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

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

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

分享到:
评论

相关推荐

    通过反射获得实体类的字段和值

    通过反射获得实体类的字段和值

    利用反射机制动态获取对象属性名称及数据类型

    利用反射机制动态获取对象属性名称及数据类型 利用反射机制动态获取对象属性名称及数据类型 利用反射机制动态获取对象属性名称及数据类型 利用反射机制动态获取对象属性名称及数据类型 利用反射机制动态获取对象属性...

    java基于反射得到对象属性值的方法

    主要介绍了java基于反射得到对象属性值的方法,结合实例形式分析了java基于反射获取对象属性值的相关实现方法与操作技巧,需要的朋友可以参考下

    C#中使用反射遍历一个对象属性及值的小技巧

    对应某个类的实例化的对象tc, 遍历获取所有属性(子成员)的方法(采用反射): 代码如下: Type t = tc.GetType();//获得该类的Type //再用Type.GetProperties获得PropertyInfo[],然后就可以用foreach 遍历了 foreach ...

    java 通过反射获取类上注解,方法上注解,注解里的值及方法参数

    java 通过反射获取类上注解,方法上注解,注解里的值及方法参数,项目为maven项目。导入时记得选择maven项目

    C#通过属性名字符串获取、设置对象属性值操作示例

    主要介绍了C#通过属性名字符串获取、设置对象属性值操作,结合实例形式总结分析了C#通过反射获取对象属性值并设置属性值,获取对象的所有属性名称及类型等相关操作技巧,需要的朋友可以参考下

    反射工具类 + 自定义的用于标注字段含义的注解.zip

    ReflectionUtils :反射工具类,包括 ...--- 通过字段名称获得对象中对应的值 --- 驼峰格式字符串转换为下划线格式字符串 ColumnExplain: 使用在实体类字段上,用于标注字段含义,且可以通过反射获取含义

    使用JSON绑定实体对象属性值到页面TextBox控件

    利用反射将实例化得到的实体对象转换为JSON格式的字符串,前台JS转换为JSON对象后使用Jquery将值绑定到页面对应的控件中。便利:不需要后台代码逐行一个个控件进行付值

    01:详解C#中的反射.pdf

    反射是.NET中的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类、结构、委托、接口和枚举等)的成员和成员的信息。有了反射,即可对每一个类型了如指掌。另外我还可以直接创建对象,即使这个...

    java反射机制工具类

    java反射,设置属性值,获得属性,具有多个对象同事设置,缓存的处理,

    暴力反射简单实用demo

    提供一个类给你,你可以获得它里面所有的成员信息和值而不管该对象的成员是否是私有的还是共有的,都可以获得,该技术在学习做框架,理解框架中很实用

    控制台程序【泛型+反射】

    提示:用DataReader去访问数据库,将得到的结果通过反射生成实体对象/集合返回; 4 封装一个方法,能控制台输出任意实体的全部属性和属性值; 5 进阶需求:提供泛型的数据库实体插入、实体更新、ID删除数据的数据库...

    C#根据反射和特性实现ORM映射实例分析

    比如:运行时获得对象有哪些属性,方法,委托等。 反射的作用? 能够实现运行时,动态调用对象的方法,以及动态设置、获取属性值等。 反射的示例: using System; using System.Reflection; namespace CS_Test { ...

    手写持久化(反射+泛型)+实体生成器

    本手写持久化是结实体进行反射动态的得到实体的属性名,和属性值,再用泛型来强制约束,和动态的得到实体对象类型。最后动态的生成SQL语句,直接对数据库访问和持久化操. 注(内有一个配套的实体生成器,但是要在...

    java反射总结实例详解

    主要结合实例形式分析了介绍了java基于反射得到对象属性值的方法,Class类,基本数据类型,类的反射等,需要的朋友可以参考下

    Spring-IOC手动模拟实现-利用dom4解析xml文件

    通过反射实例化得到对应的实例化对象,放置在map中(map是键值对,可根据id获取值)(遍历list获取对应的class属性,利用class。formName(class).newIntance()) * 4.通过id获取指定的实例化对象 * */ 底层工厂...

    day021-反射和注解笔记和代码.rar

    2、同一种类型不管通过什么方式得到Class的实例都是相等的;一个类型的字节码对象只有一份,在元空间。 3、Class的实例就看成是Java中我们学过的所有的数据类型在JVM中存在的一种状态(字节码对象) String....

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     2.1 直接通过JDBC API来持久化实体域对象  2.2 ORM简介  2.2.1 对象-关系映射的概念  2.2.2 ORM中间件的基本使用方法  2.2.3 常用的ORM中间件  2.3 实体域对象的其他持久化模式  2.3.1 主动域对象模式  ...

    波长敏感功能控制的反射率重建

    光谱反射率定义为对象的“指纹”,并且照明不变。... 然后,通过在生成的矩阵上应用奇异值分解来获得重构的反射率。 实验结果表明,与传统的PCA方法相比,我们的方法可以减少47%的均方误差和55%的Lab误差。

Global site tag (gtag.js) - Google Analytics