gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:07:23 24 4
gpt4 key购买 nike

我使用的是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};

我只是采用了 ClassObject 数组,只是为了使 returnNewObject 方法通用。

现在我怎样才能避免上述数组并仍然使 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 不会增加太多值(value),它只会使事情变得复杂。

<小时/>

如果你只有一个参数,你可以做的是

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

关于java - 如何改进下面的方法逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21156558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com