![](/img/trans.png)
[英]What's the best way to handle coexistence of the “int enum” pattern with java enums as an API evolves?
[英]Best way for mapping enum with int
我有一個兩難選擇,那就更好了-如果我將其設置為實體地圖的字段:
@ManyToMany
Map<SomeEnum, Integer> field;
或列出並創建其他類以使用int映射枚舉:
@ManyToOne
List<WrapperClass> field;
和包裝類:
@Entity
class WrapperClass {
@Basic(optional=false)
@Enumerated(EnumType.STRING)
public SomeEnum someEnum;
public int value;
}
我不確定我的答案是否會真正有用,因為我認為,您所需的數據結構的選擇實際上取決於您要使用信息的目的。 但是,由於您還沒有提供這些信息,因此我會推斷一些事情(可能不正確...)。 如果您提供更多信息,我將更新我的答案。
由於您似乎想從一個enum
到一個int
進行映射,因此將使用第一個更自然的數據結構,即
Map<SomeEnum, Integer> field;
僅僅是因為這很好地定義了一個映射。 您會獲得更好的查找時間和一個數據結構,該數據結構用於將鍵(在本例中為SomeEnum
)鏈接到值( Integer
)。
對於List
或Set
,您正在使用的數據結構自然不適合查找SomeEnum
的某些實例映射到的值。 您必須為WrapperClass
編寫自己的Comparator
或compareTo
,並編寫更多代碼(如果您使用Map<SomeEnum, Integer> field
,這些代碼已經為您Map<SomeEnum, Integer> field
。
...除非出於某些特殊原因,您需要采用其他方式對此進行編碼? 某些限制使您無法使用這種方法?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.