簡體   English   中英

枚舉練習 - 在課堂內/單獨定義,制作公共/私人

[英]Enum practices - Define inside a class/separately, make public/private

定義枚舉時的好習慣是什么?

例如,我有一個Person類。 對於本課程,我選擇使用值為MALE和FEMALE的枚舉。

枚舉應該在Person類中定義還是單獨定義? 枚舉應該定義為私有還是公共? 另外,您是否有任何進一步的建議可以使枚舉盡可能靈活?

恕我直言,使它成為class Personpublic static enum

原因是enum Gender僅適用於人,因此將它放在那里以便它們被綁定在一起(性別在沒有人的背景下沒有用)。

好處:

  • 減少階級膨脹
  • 如果您將Person移動到另一個包/項目,性別將始終伴隨它
  • 作為唯一用戶的人具有“控制權”並且可以根據需要改變它,例如
    • 添加private List<HealthIssue> genderSpecificHealthIssues;
    • 添加更多枚舉,例如TRANSGENDERINTERSEX等等

唯一的缺點是你必須使用static導入來使用它,即import static com.company.Person.Gender.*;

在許多JDK類中都可以看到這種模式,例如Calendar ,它定義了它類中使用的許多與日期相關的常量。

要獲得完全的靈活性,請將其添加到靜態類中。 但當然,這僅適用於需要在整個應用程序中使用的枚舉。 對於本地和專業的枚舉,最好讓它們“接近”它們的使用位置。 例如 ,我有一個IPHandler類,它使IPv4和IPv6地址的處理,解析和轉換對類用戶透明(IPHandler是一個靜態類)。 它有一個枚舉IPType,其值為IPv4和IPv6,僅在IPHandler中用於多個操作。 由於它沒有在其他任何地方使用,因此它已在IPHandler類中定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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