Создание экземпляра универсального типа Java
Таким образом, у меня есть эта проблема, что я хочу иметь фабрику / менеджер класса UserManager, который управляет пользователями. И пользователи имеют как UserType1, так и UserType2.
в настоящее время у меня есть это для UserManager.
public abstract class UserManager<T extends User> {
// T is either UserType1 or UserType2
public ArrayList<T> users;
}
Теперь я хочу создать UserType1 или UserType2 в зависимости от условий, например
public T create(boolean isType1) {
if(isType1) // create UserType1
else // create UserType2
}
И я не могу просто сделать
T newUser = new T();
Я застрял, любая помощь приветствуется!
1 ответ
public T create(boolean isType1) {
if(isType1) // create UserType1
else // create UserType2
}
Это не имеет смысла: что произойдет, если T
является UserType1
а также isType1
ложно? Тогда вы бы создали UserType2
который не является T
,
Если isType1
фиксируется для данного UserManager
тогда это не должно быть параметром во-первых, и вы можете иметь
abstract public T create();
с разными реализациями или читами с приведениями (вообще говоря, плохая идея).