From 82966b3beb0793e42b9188e46e4b6ee9ab9000de Mon Sep 17 00:00:00 2001 From: 王彬 Date: Mon, 19 Aug 2019 15:06:40 +0800 Subject: [PATCH] optimized UtilObject --- src/main/java/com/taover/util/UtilObject.java | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- src/main/java/com/taover/util/bean/ResultInfoException.java | 2 -- 2 files changed, 103 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/taover/util/UtilObject.java b/src/main/java/com/taover/util/UtilObject.java index b8a5356..edd2f3c 100644 --- a/src/main/java/com/taover/util/UtilObject.java +++ b/src/main/java/com/taover/util/UtilObject.java @@ -2,7 +2,9 @@ package com.taover.util; import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; +import java.util.Map; public class UtilObject { /** @@ -96,7 +98,81 @@ public class UtilObject { } return newDest; - } + } + + /** + * 将源对象source字段赋值到对象dest字段,条件1字段名相同,条件2字段类型相同; + * 注:source与dest可以是两个没有关系的类,不接受基本封装类型,例如Integer + * @param source + * @param destClass + * @param allowNull + * @param exceptFieldNameArray + * @return 如果source==null或者destClass==null,则返回false + */ + public static E fieldCopy(Object source, Class destClass, boolean allowNull, String exceptFieldNameArray[]) throws Exception{ + //引用检查 + if(source==null || destClass==null){ + return null; + } + + //获取Field数组 + Field[] sourceField = source.getClass().getDeclaredFields(); + Field[] destField = destClass.getDeclaredFields(); + + //获取目标对象 + String[] destFieldNameArray = new String[destField.length]; + String[] destFieldTypeArray = new String[destField.length]; + for(int i=0; i E mapToObject(Map dataMap, Class beanClass, boolean isCopyNull, String exceptFieldNameArray[]) throws Exception{ + if(beanClass == null){ + return null; + } + E result = beanClass.newInstance(); + Iterator keyIter = dataMap.keySet().iterator(); + while(keyIter.hasNext()){ + String keyName = keyIter.next(); + String camelName = UtilString.camelName(keyName); + Object keyValue = dataMap.get(keyName); + + if(keyValue == null){ + continue; + } + + Field keyField = beanClass.getDeclaredField(camelName); + String keyTypeName = keyField.getType().getSimpleName(); + if(keyTypeName.equals("String")){ + keyField.set(result, keyValue.toString()); + }else if(keyTypeName.equals("Integer")){ + keyField.set(result, Integer.valueOf(keyValue.toString())); + } + } + return result; } public static void main(String args[]){ diff --git a/src/main/java/com/taover/util/bean/ResultInfoException.java b/src/main/java/com/taover/util/bean/ResultInfoException.java index 53f2104..84059ea 100644 --- a/src/main/java/com/taover/util/bean/ResultInfoException.java +++ b/src/main/java/com/taover/util/bean/ResultInfoException.java @@ -7,8 +7,6 @@ public class ResultInfoException extends Exception { private String error; private Object data; - private ResultInfoException(){} - protected ResultInfoException(String code, String error, Object data){ this.code = code; this.error = error; -- libgit2 0.21.2