From a44aee5d12f130637f680d2062bf919424fcce07 Mon Sep 17 00:00:00 2001 From: liuqiang1357 Date: Mon, 12 Sep 2016 15:15:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=9B=E5=BB=BA=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E6=97=B6=E4=BC=98=E5=85=88=E4=BD=BF=E7=94=A8=E6=97=A0?= =?UTF-8?q?=E5=8F=82=E6=9E=84=E9=80=A0=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/litesuits/orm/db/utils/ClassUtil.java | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/library/src/com/litesuits/orm/db/utils/ClassUtil.java b/library/src/com/litesuits/orm/db/utils/ClassUtil.java index 00eb65e..70e5b0d 100755 --- a/library/src/com/litesuits/orm/db/utils/ClassUtil.java +++ b/library/src/com/litesuits/orm/db/utils/ClassUtil.java @@ -1,17 +1,13 @@ package com.litesuits.orm.db.utils; -import android.annotation.TargetApi; -import android.os.Build; import com.litesuits.orm.db.annotation.MapCollection; import java.lang.reflect.Array; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; -import java.util.Arrays; import java.util.Collection; import java.util.Date; -import java.util.List; /** * 类工具 @@ -24,7 +20,7 @@ public class ClassUtil { /** * 判断类是否是基础数据类型 * 目前支持11种 - * 在{@link com.litesuits.orm.db.utils.DataUtil#injectDataToObject} 中注入也有体现 + * 在{@link DataUtil#injectDataToObject} 中注入也有体现 */ public static boolean isBaseDataType(Class clazz) { return clazz.isPrimitive() || clazz.equals(String.class) || clazz.equals(Boolean.class) @@ -35,7 +31,7 @@ public static boolean isBaseDataType(Class clazz) { } /** - * 根据类获取对象:不再必须一个无参构造 + * 根据类获取对象:不再必须一个无参构造,如果提供了无参构造,会优先调用 */ public static T newInstance(Class claxx) throws IllegalAccessException, InvocationTargetException, InstantiationException { @@ -45,15 +41,18 @@ public static T newInstance(Class claxx) if (cls.length == 0) { c.setAccessible(true); return (T) c.newInstance(); - } else { - Object[] objs = new Object[cls.length]; - for (int i = 0; i < cls.length; i++) { - objs[i] = getDefaultPrimiticeValue(cls[i]); - } - c.setAccessible(true); - return (T) c.newInstance(objs); } } + if (cons.length > 0) { + Constructor c = cons[0]; + Class[] cls = c.getParameterTypes(); + Object[] objs = new Object[cls.length]; + for (int i = 0; i < cls.length; i++) { + objs[i] = getDefaultPrimiticeValue(cls[i]); + } + c.setAccessible(true); + return (T) c.newInstance(objs); + } return null; }