我正在尝试编写一个工厂类来返回具有泛型参数类型的类的实例。我认为这可以使用反射来完成,但我对如何使用感到困惑。
这是我想要做的一个例子。
public class GenericObjectFactory {
public GenericObject<?> getGenericObject(Class clazz){
// I want to return a new instance here of the generic object with type parameter clazz. So something like this...
return new GenericObject<clazz>();
}
任何人都知道它是如何完成的?
我知道我可以用newInstance实例化clazz,但我想要GenericObject。 即getGenericObject(string.getClass())将返回一个新的GenericObject&lt;字符串&gt;();
对不起,这篇文章有点rambly。我希望这是有道理的。提前致谢。
特蕾西
答案 0 :(得分:0)
我认为您需要以下内容:
public <T> GenericObject<T> getGenericObject(){
return new GenericObject<T>();
}
使用示例:
GenericObject<String> obj = genericObjectFactory.getGenericObject();
答案 1 :(得分:0)
针对您的问题的典型明确解决方案如下:
public class GenericObjectFactory {
public <T> GenericObject<T> getGenericObject(Class<T> clazz){
return new GenericObject<T>();
}
}
由于T
是擦除,因此新创建的GenericObject
实例甚至不“知道”其参数T
的值是什么,您可能希望传递{ {1}}到clazz
GenericObject
显然你必须定义这样的构造函数。
修改
以下是用法示例:
public class GenericObjectFactory {
public <T> GenericObject<T> getGenericObject(Class<T> clazz){
return new GenericObject<T>(clazz);
}
}