`

通过反射获得对象的值

阅读更多

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

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

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

分享到:
评论

相关推荐

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

    在深入探讨如何通过反射获取实体类的字段和值之前,我们先来理解一下反射是什么以及它在.NET框架中的作用。反射是一种强大的编程技术,允许运行时动态地获取类型的信息并操作对象。它提供了对程序集、模块、类型、...

    java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名

    1. **获取枚举类**:要通过反射获取枚举类,首先需要得到其Class对象。这可以通过`Class.forName()`方法完成,提供枚举类的全限定名作为参数。 ```java Class&lt;Color&gt; colorClass = (Class) Class.forName(...

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

    接下来,我们创建一个名为`ReflectorClass`的辅助类,其中包含一个静态方法`getPropertyName`,这个方法接受一个对象实例作为参数,通过反射获取该对象的所有属性名及对应的类型,并返回一个字符串,每个属性名与...

    运用反射得到类中的属性和值

    ### 运用反射得到类中的属性和值 在Java编程语言中,反射是一种强大的机制,它允许程序在运行时检查类、接口、字段和方法的信息,并且能够动态地调用方法或修改字段值。本文将深入探讨如何通过反射来获取一个类中的...

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

    本教程将深入探讨如何通过反射获取类、方法上的注解以及注解中的值和方法参数。 1. **注解的定义与使用** 注解以`@`符号开头,后面跟着注解的类型。例如,`@Override`表示方法重写,`@Deprecated`表示某个功能已...

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

    本文将深入探讨如何使用反射来获取对象的属性值,这在某些场景下非常有用,例如动态访问私有属性、序列化或单元测试。 首先,我们需要了解Java中的`java.lang.reflect`包,这个包提供了对运行时类结构的访问。在这...

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

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

    ReflexProperty(通过反射出属性值)

    要通过反射获取属性信息,首先需要得到类型实例,然后调用`Type`对象的`GetProperty()`方法。这个方法接受属性名作为参数,可选地接受一个`BindingFlags`枚举值来指定搜索条件。例如: ```csharp Type myType = ...

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

    C# 通过属性名字符串获取、设置对象属性值操作示例主要介绍了 C# 通过反射获取对象属性值并设置属性值、获取对象的所有属性名称及类型等相关操作技巧。下面是详细的知识点解释: 一、通过反射获取对象属性值 在 C#...

    dom4j+反射,面向对象方式的xml格式转换

    我们可以获取并调用Method对象表示的方法,或者通过Field对象访问或修改字段值。 将DOM4J与反射结合,我们可以实现XML到Java对象的映射。首先,解析XML文档得到Element对象,然后根据Element的标签名创建对应的Java...

    java 反射得到某个方法

    通过反射,我们可以在不知道具体类名或方法名的情况下,动态地调用对象的方法或访问其属性。在本文中,我们将深入探讨如何使用Java反射来获取并执行某个特定的方法。 首先,我们需要了解Java反射的基本概念。`java....

    在反射动态机制生成对象的实体

    ### 在反射动态机制生成对象的实体 ...通过反射机制生成对象的实体是一种非常强大的技术,尤其适用于那些需要运行时动态创建对象的场景。了解并熟练掌握这些技术可以帮助开发者更好地利用Java的灵活性和扩展性。

    java 反射取得类的私有属性,通过私有属性取得属性值

    要获取类的私有属性,我们需要先获得该类的`Class`对象,这可以通过`Class.forName()`方法或者`MyClass.class`的方式实现。然后,我们可以使用`getDeclaredFields()`方法获取类的所有声明的字段,包括私有的。这个...

    反射(Refection)实现镜像对象封装库.zip

    1. **类的反射**:通过`Class.forName()`方法可以动态加载类,获取到`Class`对象,从而获得类的元数据,比如类名、包名、父类、接口、注解等。 2. **对象的实例化**:反射可以让我们在运行时创建一个类的实例,即使...

    基于反射机制实现Java对象向Json数据的转换.pdf

    基于反射机制实现Java对象向Json数据的转换 JSON(JavaScript Object Notation)是一种轻量...通过使用Java的反射机制和JSON库,可以轻松地将Java对象转换为JSON数据,为AJAX和J2EE应用提供了便捷的数据交换解决方案。

    JAVA 反射机制应用

    - 使用缓存,如使用WeakHashMap存储已经反射得到的Field、Method或Constructor对象,避免重复查找。 - 避免反射调用敏感方法,如修改final字段或私有成员,除非明确知道这样做是安全的。 总之,Java反射机制为...

    java_经典Socket编程_反射

    ##### 2.1 通过反射获得对象的类/属性/方法/构造器 **知识点描述**: 了解Java反射的概念,掌握如何通过反射获取对象的信息(类、属性、方法和构造器)。 **详细说明**: - **反射概念**: - 反射是Java的一种特性...

    java反射获取所有属性,获取所有get方法,包括子类父类

    在Java中,反射主要用于在运行时分析类和对象,包括访问私有成员、调用私有方法、创建动态代理等。在标题和描述中提到的知识点主要集中在如何通过反射获取类的所有属性和get方法,包括来自子类和父类的。下面将详细...

    java反射机制学习(四):通过反射执行方法、操作属性、操作数组中的数据

    一旦获得`Class`对象,我们可以通过`getDeclaredMethods()`方法获取类的所有声明的方法,然后通过`invoke()`方法来执行指定对象上的某个方法。例如: ```java Class&lt;?&gt; clazz = Class.forName(...

    C#的反射和特性

    C#反射(Reflection)是.NET 中的重要机制,通过反射,可以在运行时获得.NET 中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和...

Global site tag (gtag.js) - Google Analytics