Предварительная информация.Как создать метод с возвращаемым типом как любой подтип суперкласса
public abstract class Person {}
public class A extends Person{}
public class B extends Person{}
public class C extends Person{}
public X getPersonByType(String type){
//This Method will return either A or B or C based on type
//what should X be ?
}
Мне нужно создать метод, который принимает в String
и возвращает объект, который является подтипом Person
.
Дополнительная информация. Каждый из классов A B C имеет атрибуты открытых списков. Они не могут быть перенесены в класс Person, поскольку для этого требуется их уникальное имя (JPA для многих таблиц).
Теперь, если возможно, мне бы не хотелось, чтобы он возвращал person
, так как я не смог бы получить доступ к атрибуту ролей (человек не знает об этом). Я также предпочел бы решение (если это возможно), которое не требует, чтобы я использовал или использовал instanceOf (если возможно).
P.S попытался <? extends Person>
, но Eclipse, дал мне ошибку "тип возвращаемого метода недостающую"
Задать ему вопрос 'Person'. –
см. [Generics] (http://docs.oracle.com/javase/tutorial/extra/generics/index.html) и [подстановочные знаки] (http://docs.oracle.com/javase/tutorial/extra/generics /wildcards.html) – Justin
@gangqinlaohu: Нет никаких признаков того, что дженерики здесь уместны. –