This commit is contained in:
wentch
2016-01-23 16:03:19 +08:00
parent ec546085f6
commit f3c194540e

View File

@@ -135,7 +135,7 @@ public interface Creator<T> {
} }
Constructor<T> constructor0 = null; Constructor<T> constructor0 = null;
for (Constructor c : clazz.getConstructors()) { //优先找public 的构造函数 for (Constructor c : clazz.getConstructors()) { //优先找public 的构造函数
if (c.getParameterTypes().length == 0) { //为了兼容android 而不使用 getParameterCount() if (c.getParameterCount() == 0) {
constructor0 = c; constructor0 = c;
break; break;
} }
@@ -169,13 +169,15 @@ public interface Creator<T> {
} }
} }
} }
if (constructor0 == null) {//最后找非private的构造函数 if (constructor0 == null) {//最后找非private的构造函数
for (Constructor c : clazz.getDeclaredConstructors()) { for (Constructor c : clazz.getDeclaredConstructors()) {
if (Modifier.isPrivate(c.getModifiers())) continue; if (Modifier.isPrivate(c.getModifiers())) continue;
if (c.getParameterCount() == 0) {
constructor0 = c; constructor0 = c;
break; break;
} }
} }
}
final Constructor<T> constructor = constructor0; final Constructor<T> constructor = constructor0;
if (constructor == null) throw new RuntimeException("[" + clazz + "] have no public or java.beans.ConstructorProperties-Annotation constructor."); if (constructor == null) throw new RuntimeException("[" + clazz + "] have no public or java.beans.ConstructorProperties-Annotation constructor.");
//------------------------------------------------------------- //-------------------------------------------------------------