我正在嘗試創建以下枚舉。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()'? –