java - 如何改进以下方法逻辑?

  显示原文与译文双语对照的内容

我在用JAVA7我有下面的方法。


public static <T extends BaseClass> T newObject(Class<T> classOfT, String someName)
 {

 SomeClass data = new SomeClass();
 data.setName(someName);

 Class[] constructorSignature = new Class[] {SomeClass.class};
 Object[] constructorArgs = new Object[] {data};


 return returnNewObject(classOfT, constructorSignature, constructorArgs);
 }

现在我必须编写一个通用方法来接受上面的参数。 方法应为泛型。


private static <T extends BaseClass> T returnNewObject(Class<T> classOfT, Class[] constructorSignature, Object[] constructorArgs) throws SomeException
 {

 try
 {

 Constructor<T> domainObjectConstructor = classOfT.getDeclaredConstructor(constructorSignature);
 return (T)domainObjectConstructor.newInstance(constructorArgs);
 }
}

如何避免以下两行?


Class[] constructorSignature = new Class[] {SomeClass.class};
 Object[] constructorArgs = new Object[] {data};

我仅仅花费了英镑的数组和英镑的对象,以使英镑的method方法成为通用。

现在我如何避免上数组,还可以使的returnNewObject 方法成为通用的?

returnNewObject 方法应采用任何类。任何数据和任何类类型来复制数据。

时间: 作者:

我就像这样写。


public static <T extends BaseClass> T newObject(Class<T> classOfT, String someName) {
 try {
 return classOfT.getConstructor(SomeClass.class)
. newInstance(new SomeClass(someName));
 } catch (Exception e) {
 throw new SomeException("Failed to create" + classOfT, e);
 }
}

你的returnNewObject并不重要,只是让事情变得复杂。


如果只有一个参数,你可以做什么


private static <T extends BaseClass> T returnNewObject(Class<T> classOfT, Object arg) throws SomeException {
 try {
 return (T) classOfT.getConstructor(arg.getClass()).newInstance(arg);
 }
}

作者:
...