Создание экземпляра универсального типа 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();

с разными реализациями или читами с приведениями (вообще говоря, плохая идея).

Другие вопросы по тегам