Я пытаюсь создать следующее перечисление.Параметр Java Bounded Type в Enum
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)
. Компилятор не должен пропускать другие типы.
Может кто-то помочь в понимании, почему это происходит.
Благодаря
Есть ли у руководства и задачи общий интерфейс? Если нет, вам нужно будет определить метод с типом Object. – JustinKSU
@JustinKSU, Оба они расширяют 'SObject'. – RandomQuestion
Зачем использовать 'enum' для этого шаблона вызова? Почему бы просто не добавить статический метод в 'Task' и' Lead', как 'Lead.isValid (lead)'? Или даже нестатический, и просто вызывайте 'lead.isValid()'? –