簡體   English   中英

Java枚舉與字符串的常量

[英]Java enums vs constants for Strings

我已經從使用常量字符串切換到使用枚舉。 很多時候我需要枚舉的String表示形式(用於記錄,傳遞給需要String的API等)。

使用String常量,您只需傳遞String值,但是使用枚舉,您必須調用toString() 有沒有辦法在提供枚舉變量時“默認”為String值?

正如許多海報所評論的那樣,如果您經常需要String表示,也許不應該使用枚舉。

您應該完全采用enum而不是首先使用String表示。 僅使用toString()生成消息,日志等,但在內部您需要使用enum 任何MapSet等操作都應該在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM