This commit is contained in:
Redkale
2017-03-09 09:49:14 +08:00
parent 19a950dab5
commit 67807e913e

View File

@@ -86,6 +86,7 @@ public interface Creator<T> {
* 创建对象 * 创建对象
* *
* @param params 构造函数的参数 * @param params 构造函数的参数
*
* @return 构建的对象 * @return 构建的对象
*/ */
public T create(Object... params); public T create(Object... params);
@@ -95,6 +96,7 @@ public interface Creator<T> {
* *
* @param <T> 构建类的数据类型 * @param <T> 构建类的数据类型
* @param clazz 构建类 * @param clazz 构建类
*
* @return Creator对象 * @return Creator对象
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@@ -109,7 +111,7 @@ public interface Creator<T> {
if (clazz.isInterface() || Modifier.isAbstract(clazz.getModifiers())) { if (clazz.isInterface() || Modifier.isAbstract(clazz.getModifiers())) {
throw new RuntimeException("[" + clazz + "] is a interface or abstract class, cannot create it's Creator."); throw new RuntimeException("[" + clazz + "] is a interface or abstract class, cannot create it's Creator.");
} }
for (final Method method : clazz.getDeclaredMethods()) { for (final Method method : clazz.getDeclaredMethods()) { //查找类中是否存在提供创建Creator实例的静态方法
if (!Modifier.isStatic(method.getModifiers())) continue; if (!Modifier.isStatic(method.getModifiers())) continue;
if (method.getParameterTypes().length != 0) continue; if (method.getParameterTypes().length != 0) continue;
if (method.getReturnType() != Creator.class) continue; if (method.getReturnType() != Creator.class) continue;