說到在名稱 - 值對中聲明預定義的常量,我一直在'java.util.Properties','枚舉'或單獨的類與'公共靜態最終'值。屬性或枚舉或靜態最終
爲了將來的參考,我需要一些關於採取哪種方法的指導。
謝謝!
說到在名稱 - 值對中聲明預定義的常量,我一直在'java.util.Properties','枚舉'或單獨的類與'公共靜態最終'值。屬性或枚舉或靜態最終
爲了將來的參考,我需要一些關於採取哪種方法的指導。
謝謝!
這一切都取決於你的恆定生命週期。 根據定義,常數是不動的。選擇正確的方法將是可能發生變化和重新包裝需求的問題。
如果你確定,它不會永遠移動:static final是要走的路。 Pi,數學常數,這樣的事情就是一個很好的例子。
如果您認爲存在潛在的變化,但需要簡化代碼操作並且不擔心上升的兼容性,那麼枚舉就可以。我前段時間是爲錯誤代碼做的。
如果您認爲有潛在的變化,但您不希望此更改影響您的代碼,則屬性(使用資源包)是更好的選擇。標籤(翻譯),初始設置等也是一個很好的例子。
請在枚舉用例中加入一些詳細信息... – SlowAndSteady 2012-01-14 19:38:55
@Raj將枚舉用於常量集,例如在紙牌遊戲中你有黑桃,俱樂部,紅心\t和鑽石。另一種情況可以支持文件類型PNG,GIF等,如果您添加更高版本的BMP,則不會有缺點,因爲那樣您將擁有包含與新實現相匹配的枚舉的另一個API版本。 – stacker 2012-01-14 19:52:59
非常全面的答案。 +1。 Raj:你還應該注意@Sean Reilly對我的回答的評論。 – 2012-01-14 19:55:23
static final
字段用於不能形成一組確定的關閉選項,您可以從中選擇變量的狀態。相反,如果可以的話,你總是使用枚舉。
現在,當您想要保存鍵值字典時,無論其屬性如何,都可以使用屬性類型對象或有時使用Map。
如果您需要鍵值對,並且鍵是關閉選項集,那麼請考慮使用java.util.EnumMap – 2012-01-14 19:36:00
來組合枚舉和地圖方法。此外,請注意,如果您使用常量而非具有特定領域含義的封閉集合中的*真*值,則static final是更好的方法。另外,如果你只在你自己的類中使用常量,考慮將'public'修飾符改爲'private'。 – 2012-01-14 19:38:25
還有一件事要考慮 - 這些字符串會在不同的版本中改變嗎?即可能有法文版本,中文版本,「高級」版本?如果是這樣,Properties/ResourceBundles等是要走的路。
當您的一組常量固定並且預計不會經常更改時使用枚舉。如果它經常發生變化,那麼很難保持與以前版本的向後兼容性。如果在客戶端服務器體系結構中都有一些Enum的不同版本。 E.g
服務器:public enum Priority{ HIGH,LOW,MEDIUM,AVERAGE
}
客戶:public enum Priority{ HIGH,LOW,MEDIUM}
如果讓服務器發送Priority.AVERAGE到客戶端,然後客戶端會拋出異常的說。
我個人有一個具有公共靜態最終值的類文件。我覺得這很容易,我知道去哪裏看。如果你開始把枚舉或任何東西放在特定的類中,現在你必須記住它所在的類。就性能而言,我不知道。我相信別人能夠回答這個問題。 – 2012-01-14 19:24:24