所以我有一个问题,我想拥有一个工厂/经理类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();
我被困住了,不胜感激!
答案 0 :(得分:0)
public T create(boolean isType1) {
if(isType1) // create UserType1
else // create UserType2
}
这没有道理:如果T
为UserType1
而isType1
为假会怎样?然后,您将创建一个不是UserType2
的{{1}}。
如果为给定的T
固定了isType1
,那么它就不应成为参数,而您可以拥有
UserManager
使用不同的实现方式或使用演员表作弊(通常来说是个坏主意)。