是否可以编写一个可以创建任何指定类型实例的方法?
我认为java泛型应该有帮助,所以它可能是这样的:
public <U> U getObject(Class klass){
//...
}
Run Code Online (Sandbox Code Playgroud)
谁能帮助我?
public <U> U getObject(Class<U> klass)
throws InstantiationException, IllegalAccessException
{
return klass.newInstance();
}
Run Code Online (Sandbox Code Playgroud)
但是这种方法几乎没有"问题":
getObjectthrows有关详细信息,请参阅Class.newInstance()文档.
public <U> U genericFactory(Constructor<U> classConstructor, Object..args)
throws
InstantiationException,
IllegalAccessException,
IllegalArgumentException,
InvocationTargetException {
return classConstructor.newInstance(args);
}
Run Code Online (Sandbox Code Playgroud)
您可以Class<U>通过该getConstructors方法从对象获取构造函数.通过构造函数本身,您可以获得有关参数的信息,因此需要在此工厂外部添加一些额外的代码以适当地填充参数.
显然,这和彼得的答案一样难看.
我强烈建议尽可能使用工厂界面,而不是滥用反射.
public interface MyFactory<T> {
T newInstance();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
368 次 |
| 最近记录: |