[英]Override generic method in Java enum
為了向公共方法的每個枚舉實例提供特定行為,我們可以執行以下操作:
public enum Action {
a{
void doAction(...){
// some code
}
},
b{
void doAction(...){
// some code
}
},
c{
void doAction(...){
// some code
}
};
abstract void doAction (...);
}
有沒有辦法給枚舉中定義的抽象泛型方法賦予特定的實現?
例如:
abstract<T> T doAction (T t);
我在其他問題中讀到它應該是不可能的,但我一直在努力尋找變通方法,並提出了過於復雜的裝置。 也許仿制葯不是正確的方法。 有沒有更簡單的方法來實現這一目標?
是的,你可以做到。 只要按原樣保留抽象方法定義,並在每個枚舉常量中,您必須執行以下操作:
a{
@Override
<T> T doAction(T t) {
//your implementation
}
}...
但是,請注意, T
的類型參數a
常數不一樣T
的類型參數b
不變等。
完成后,您可以像這樣使用它:
String string = Action.a.<String>doAction("hello");
要么
Integer integer = Action.b.<Integer>doAction(1);
此處明確提供類型是完全可選的,因為編譯器將根據提供的參數的類型推斷結果類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.