我創建了一個Enum來定義某些操作。針對外部API編程我不得不使用Integer
來表示此操作。這就是爲什麼我向Enum添加了一個整型實例字段。這應該與Joshua Bloch的Effective Java一致,而不是依賴於ordinal()
或使用values()[index]
的Enum常量的順序。從一個唯一的實例值中創建一個枚舉工廠方法
public enum Action {
START(0),
QUIT(1);
public final int code;
Protocol(int code) {
this.code = code;
}
}
我從API整數值what
,現在我想創建一個枚舉值了吧,我怎麼能在最通用的方式實現這一點?
很明顯,添加這樣的工廠方法是行不通的。你不能實例化一個Enum。
Action valueOf(int what) {
return new Action(what);
}
當然,我總是可以做一個switch-case語句並添加所有可能的代碼並返回相應的常量。但我想避免在兩個地方同時定義它們。
你可以使用正確的大小來初始化地圖:'new HashMap <>(Action.values()。length,1);'(如果沒有多少值但不會產生影響任何做它)。 – assylias
@assylias有趣的是,我查看了源代碼,構造函數實際上忽略了加載因子:*請注意,此實現忽略loadFactor;它始終使用3/4的加載因子。這簡化了代碼,並且通常會提高性能。* –
我不知道 - 有趣。 – assylias