我正在尝试创建以下枚举。Java中的枚举类型参数
public enum MyEnum{
LEAD {
@Override
public boolean isValid(Lead lead) { //compile error, asks to retain type as T
}
},
TASK {
@Override
public boolean isValid(Task task) { //compile error, asks to retain type as T
}
};
public abstract <T extends SObject> boolean isValid(T object);
}
Lead
和Task
类都延伸SObject
。我的意图是基本上让客户能够使用MyEnum.LEAD.isValid(lead)
或MyEnum.TASK.isValid(task)
。编译器不应该允许传递其他类型。
有人可以帮助理解为什么会发生这种情况。
谢谢
Lead和Task是否有共同的界面?如果不是,则需要使用Object类型来定义方法。 – JustinKSU
@JustinKSU,他们都扩展了'SObject'。 – RandomQuestion
为什么在该调用模式中使用'enum'?为什么不在“Task”和'Lead'上添加一个静态方法就像'Lead.isValid(lead)'?甚至是非静态的,只需调用'lead.isValid()'? –