У меня есть два класса, которые и 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
Вы ищете * реифицированные Дженерики *. Это не поддерживается в Java. C# поддерживает его. В Java generics являются только compiletime. Посмотрите заводскую модель, см. Ссылку выше, чтобы дублировать вопрос для правильных ответов. – BalusC
@BalusC: Вы видите, как применять заводскую схему здесь? Я просто не понимаю, как реализовать метод 'E create()' на Factory (от Tom Hawtin - ответ на тайтл http://stackoverflow.com/questions/75175/create-instance-of-generic-type-in-java/75528 # 75528) – Roman