簡體   English   中英

獲取枚舉.values()[]或創建枚舉數組?

[英]get enum .values()[] or create Enum array?

我必須使用開關來獲取枚舉的值。 枚舉是這個:

public enum Compass {      NORTH, SOUTH, EAST, WEST;      }

我這樣做(在枚舉之外的另一個類中):

Compass.values()[0].name()

但是這本書說這樣做的方法是:

Compass[] comp = {  Compass.NORTH, Compass. SOUTH, Compass.EAST, Compass.WEST  }
comp[0].name();

他們中的任何一個比另一個更好嗎? 我的意思是,創建枚舉“對象”或其他東西更穩定嗎?

如果您執行Compass.values(); 返回值的順序將是它們在Enum類中寫入的順序。 如果您的代碼依賴於數組內容的順序,則最好像示例中那樣創建自己的數組,並在需要時控制順序。

如果只想獲取此枚舉的特定值,例如NORTH,則可以編寫Compass.NORTH.name(); 而不是完全使用數組。

要不使用數組直接獲取枚舉值之一的名稱,可以執行以下操作:

Compass.NORTH.name();

Compass.values()返回的數組的順序是枚舉的聲明順序,因此,除非您不喜歡聲明的順序(並且無法更改它),否則您擔心單獨創建一個數組沒有好處,或者您擔心有人否則會改變順序(例如,插入新值)並破壞您的代碼。

不過,通常來說,您要避免重復,因為這意味着要維護兩件事而不是一件事,而且事情很容易不同步。 如果有人添加了NORTH_EAST,SOUTH_WEST等,您將必須記住要更新數組以適應這些值,或者發現您的代碼在某些情況下不起作用。

暫無
暫無

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

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