package com.appdev.bsf.server.common;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
public class ObjectDynamicCreator {
/**
* 返回由对象的属性为key,值为map的value的Map集合
*
* @param obj
* Object
* @return mapValue Map<String,String>
* @throws Exception
*/
public static Map<String, String> getFieldVlaue(Object obj) throws Exception {
Map<String, String> mapValue = new HashMap<String, String>();
Class<?> cls = obj.getClass();
Field[] fields = cls.getDeclaredFields();
for (Field field : fields) {
String name = field.getName();
String strGet = "get" + name.substring(0, 1).toUpperCase() + name.substring(1, name.length());
Method methodGet = cls.getDeclaredMethod(strGet);
Object object = methodGet.invoke(obj);
String value = object != null ? object.toString() : "";
mapValue.put(name, value);
}
return mapValue;
}
/**
* 返回由Map的key对属性,value对应值组成的对应
*
* @param map
* Map<String,String>
* @param cls
* Class
* @return obj Object
* @throws Exception
*/
public static Object setFieldValue(Map<String, String> map, Class<?> cls) throws Exception {
Field[] fields = cls.getDeclaredFields();
Object obj = cls.newInstance();
for (Field field : fields) {
Class<?> clsType = field.getType();
String name = field.getName();
String strSet = "set" + name.substring(0, 1).toUpperCase() + name.substring(1, name.length());
Method methodSet = cls.getDeclaredMethod(strSet, clsType);
if (map.containsKey(name)) {
Object objValue = typeConversion(clsType, map.get(name));
methodSet.invoke(obj, objValue);
}
}
return obj;
}
/**
* 将Map里面的部分值通过反射设置到已有对象里去
*
* @param obj
* Object
* @param data
* Map<String,String>
* @return obj Object
* @throws Exception
*/
public static Object setObjectFileValue(Object obj, Map<String, String> data) throws Exception {
Class<?> cls = obj.getClass();
Field[] fields = cls.getDeclaredFields();
for (Field field : fields) {
Class<?> clsType = field.getType();
String name = field.getName();
String strSet = "set" + name.substring(0, 1).toUpperCase() + name.substring(1, name.length());
Method methodSet = cls.getDeclaredMethod(strSet, clsType);
if (data.containsKey(name)) {
Object objValue = typeConversion(clsType, data.get(name));
methodSet.invoke(obj, objValue);
}
}
return obj;
}
/**
* 把对象的值用Map对应装起来
*
* @param map
* Map<String,String>
* @param obj
* Object
* @return 与对象属性对应的Map Map<String,String>
*/
public static Map<String, String> compareMap(Map<String, String> map, Object obj) {
Map<String, String> mapValue = new HashMap<String, String>();
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
String name = field.getName();
if (map.containsKey(name)) {
mapValue.put(name, map.get(name));
}
}
return mapValue;
}
/**
* 把临时对象的值复制到持久化对象上
*
* @param oldObject
* Object 持久化对象
* @param newObject
* Object 临时对象
* @return 持久化对象
* @throws Exception
*/
public static Object mergedObject(Object oldObject, Object newObject) throws Exception {
Class<?> cls = newObject.getClass();
Field[] fields = cls.getDeclaredFields();
for (Field field : fields) {
Class<?> clsType = field.getType();
String name = field.getName();
String method = name.substring(0, 1).toUpperCase() + name.substring(1, name.length());
String strGet = "get" + method;
Method methodGet = cls.getDeclaredMethod(strGet);
Object object = methodGet.invoke(newObject);
if (object != null) {
String strSet = "set" + method;
Method methodSet = cls.getDeclaredMethod(strSet, clsType);
Object objValue = typeConversion(clsType, object.toString());
methodSet.invoke(oldObject, objValue);
}
}
return oldObject;
}
public static Object typeConversion(Class<?> cls, String str) {
Object obj = null;
String nameType = cls.getSimpleName();
if ("Integer".equals(nameType)) {
obj = Integer.valueOf(str);
}
if ("String".equals(nameType)) {
obj = str;
}
if ("Float".equals(nameType)) {
obj = Float.valueOf(str);
}
if ("Double".equals(nameType)) {
obj = Double.valueOf(str);
}
if ("Boolean".equals(nameType)) {
obj = Boolean.valueOf(str);
}
if ("Long".equals(nameType)) {
obj = Long.valueOf(str);
}
if ("Short".equals(nameType)) {
obj = Short.valueOf(str);
}
if ("Character".equals(nameType)) {
obj = str.charAt(1);
}
return obj;
}
}
分享到:
相关推荐
java利用反射,将Object和Map进行互相转换,list和map互相转换 java Map和Object转换,list和map转换
在转换Map到实体时,我们需要获取实体类的属性信息,然后根据Map中的键值对设置这些属性的值,这就需要用到反射。 下面是一个简单的工具类`CollectionTools`的示例代码,它使用泛型和反射实现了Map到实体的转换: ...
具体到Java Map转换成Bean的过程,以下是一个简单的示例: ```java public class BeanUtils { public static <T> T mapToBean(Map, Object> map, Class<T> beanClass) throws Exception { if (map == null || ...
对于"java反射实现Object转json"这个主题,我们将深入探讨如何使用反射机制将Java对象转换为JSON格式的数据。 首先,理解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也...
在本主题中,我们将深入探讨如何使用Java反射机制将Map转换为Java对象,同时支持Boolean和Date类型的数据。这种转换在处理JSON到对象的映射或者数据库查询结果到对象的映射时非常有用。 首先,我们需要了解Java中的...
同时,使用反射机制也可以将 Map 对象转换为 Object 对象。 ```java public Map, Object> obj2Map(Object obj) throws Exception { Map, Object> map = new HashMap, Object>(); Field[] fields = obj.getClass()...
本文将详细介绍如何使用Java反射来实现Map到Object以及Object到Map的转换。 首先,让我们理解Map和Object的基本概念。Map接口是Java集合框架的一部分,它存储键值对,允许我们通过键来查找对应的值。而Object是所有...
在给定的“利用java反射将json字符串转成对象”的主题中,我们将深入探讨如何借助反射机制将JSON字符串转换为Java对象。 首先,我们需要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人...
在Java编程中,Pojo(Plain Old Java Object)是一种简单的对象模型,通常用于表示数据实体。Map接口则是Java集合框架的一部分,它提供了键值对的数据存储方式,方便数据的存取。将Pojo对象转换为Map,可以简化数据...
在给定的标题“通过java反射实现map与bean之间互转”中,我们要探讨的是如何利用Java反射机制将Map对象转换为Java Bean对象,以及反过来,将Java Bean对象转换为Map对象。这个过程在数据处理和序列化中非常常见。 ...
使用Fastjson,我们可以非常简单地将一个Java Bean对象转换为Map。以下是一个示例: ```java import com.alibaba.fastjson.JSON; import java.util.Map; public class BeanToJsonMap { public static void ...
- **自定义转换**:如果你的类有getters和setters,你可以使用Java反射API来自动提取属性并创建Map。例如: ```java Field[] fields = person.getClass().getDeclaredFields(); Map, Object> map = new HashMap...
本文将深入探讨如何通过反射机制实现`Map`和`JavaBean`的相互转换。 首先,我们要理解`JavaBean`的基本概念。`JavaBean`是符合JavaBeans规范的类,它通常具有公共的无参构造器、getter和setter方法以及私有的属性,...
- 使用反射机制获取Java Bean的属性描述信息时,需要确保Bean对象遵循Java Bean规范,否则可能会导致转换失败。 - 在处理大量数据时,需要考虑性能优化问题,例如可以采用StringBuilder来构建JSON字符串,而不是频繁...
在Java编程中,Map和Object之间的转换是非常常见的操作。在处理数据时,我们可能需要将一个对象的属性映射到Map中,或者从Map中恢复对象的状态。本文将详细介绍如何实现Java中的Map转Object与Object转Map,并提供...
Java中实现Map与对象相互转换是许多开发者经常遇到的问题,本文将介绍五种实现Map与对象相互转换的方法,每种方法都将通过示例代码进行详细的介绍。 方法一:使用org.apache.commons.beanutils转换 该方法使用org....
反过来,从Map转换为Java Bean的过程可以使用Java的构造器或者无参构造器结合setter方法完成。以下是一个基本的实现: ```java import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTarget...
标题“Desktop_javaBean转换Map工具_”暗示了这是一个方便的工具或代码片段,用于快速将JavaBean实例转换为Map对象。 描述中提到的“直接实现Bean转换为Map,方便快捷,粘贴即用”,意味着这个工具或代码段提供了...
基于Java反射的map自动装配JavaBean工具类设计示例代码 标题 :"基于Java反射的map自动装配JavaBean工具类设计示例代码" 在 Java 开发中,经常需要将 Map 对象自动装配到 JavaBean 对象中,例如在使用 MyBatis 时...
这通常指的是将一个Map转换成一个Java对象,或者将一个Java对象转换成Map。这样做的原因可能是为了便于参数传递或者配置管理。 在提到的代码中,classA使用了Apache Commons BeanUtils库。BeanUtils是一种帮助...