泛型类型实例化Java

时间:2018-07-12 12:27:56

标签: java generics

所以我有一个问题,我想拥有一个工厂/经理类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 个答案:

答案 0 :(得分:0)

public T create(boolean isType1) {
    if(isType1) // create UserType1
    else // create UserType2
}

这没有道理:如果TUserType1isType1为假会怎样?然后,您将创建一个不是UserType2的{​​{1}}。

如果为给定的T固定了isType1,那么它就不应成为参数,而您可以拥有

UserManager

使用不同的实现方式或使用演员表作弊(通常来说是个坏主意)。