是否有可能编写一个方法来创建任何指定类型的实例?
我认为 Java 泛型应该可以帮助实现,代码可能如下:
public <U> U getObject(Class klass){
//...
}
Could anyone help me?
public <U> U getObject(Class<U> klass)
throws InstantiationException, IllegalAccessException
{
return klass.newInstance();
}
这种方法存在一些问题:
getObject
方法没有在throws
部分声明它,它也会被传播详见Class.newInstance()文档。
public <U> U genericFactory(Constructor<U> classConstructor, Object..args)
throws
InstantiationException,
IllegalAccessException,
IllegalArgumentException,
InvocationTargetException {
return classConstructor.newInstance(args);
}
您可以通过getConstructors
方法从Class<U>
对象中获取构造函数。通过构造函数本身,您可以获取有关参数的信息,因此需要在此工厂之外编写一些额外的代码以适当地填充参数。
显然,这与Peter的答案一样丑陋。
我强烈建议尽可能使用工厂接口,而不是滥用反射技术。
public interface MyFactory<T> {
T newInstance();
}
newInstance()
。 - akf