[英]Java enums vs constants for Strings
我已經從使用常量字符串切換到使用枚舉。 很多時候我需要枚舉的String
表示形式(用於記錄,傳遞給需要String
的API等)。
使用String
常量,您只需傳遞String值,但是使用枚舉,您必須調用toString()
。 有沒有辦法在提供枚舉變量時“默認”為String值?
正如許多海報所評論的那樣,如果您經常需要String
表示,也許不應該使用枚舉。
您應該完全采用enum
而不是首先使用String
表示。 僅使用toString()
生成消息,日志等,但在內部您需要使用enum
。 任何Map
, Set
等操作都應該在enum
類型上完成,這樣可以保證正確的序列化,單例模式以及enum
類型應該具有的所有其他內容。
在你的片段中:
Object o = map.get(Options.OPTION_1);
//This won't work as intended if the Map key is a String
除了編譯時錯誤之外,你應該首先詢問地圖鍵是否應該首先是String
類型。 你使用它的方式,它看起來應該是Map<Options, Something>
。
在Java中使用Enum
有很多很好的理由。 但是如果你只需要一個String
不了。
例如,如果您表示一組特定的實體,並且不希望它們與其他類型的事物(如String
)等效,那么Enum
將是合適的。 此外,如果您要調用操作它們的函數並根據特定實例進行區分。
另一方面,如果你只對某些東西的String
值感興趣,那么String
常量沒有任何問題。
根據您發布的內容,我無法確定用例是什么。 你有什么理由需要在這里使用Enum
嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.