我有两个类都extends Example
。继承,泛型和Java中的铸造
public class ClassA extends Example {
public ClassA() {
super("a", "class");
}
...
}
public class ClassB extends Example {
public ClassB() {
super("b", "class");
}
...
}
public class Example() {
public String get(String x, String y) {
return "Hello";
}
}
所以这一切都很好。所以假设我们有另一个叫做ExampleManager的类。使用示例管理器我想使用泛型类型,并因此返回该泛型类型。例如
public class ExampleManager<T extends Example> {
public T getExample() {
return new T("example","example"); // So what exactly goes here?
}
}
那么,我回到我的泛型类型我如何得到这个实际正常工作和投Example
为任何classA
或classB
?
非常感谢
复制http://stackoverflow.com/questions/75175/create-instance-of-generic-type-in-java – unholysampler 2010-04-15 20:35:23
你正在寻找*具体化泛型*。这在Java中不受支持。 C#支持它。在Java中,泛型只是编译时。查找工厂模式,请参阅上述链接以复制正确答案的问题。 – BalusC 2010-04-15 20:54:37
@BalusC:你看到如何在这里应用工厂模式?我只是没有得到如何在工厂实现'E create()'方法(来自汤姆霍金 - tackline回答http://stackoverflow.com/questions/75175/create-instance-of-generic-type-in-java/75528#75528) – Roman 2010-04-15 21:17:33