2015-02-10 186 views
1

比較值這裏是我的情況我正在比較WallEnums的兩個情況與其餘的。在枚舉java

import static com.gowallgo.enumtypes.WallEnums.CAW; 
"" (and the rest) 


    /** 
    * {@link Set} of cancel {@link WallEnums}s 
    */ 
    private static final Set<WallEnums> WALL_CODES = asSet(RES, CAW, AAP, ASV, CQP, OQR); 


// more stuff and then I use it here . 

if (wallEnum != WALL_CODES.contains(wallEnum)){} 

這要求重構。我應該在哪裏開始,所以我不需要爲每個代碼進行靜態導入?

+1

你不喜歡什麼? – 2015-02-10 16:00:53

+2

'import static com.gowallgo.enumtypes.WallEnums。*'? – vikingsteve 2015-02-10 16:01:49

+2

使用'Enum.values()'? – meskobalazs 2015-02-10 16:03:46

回答

0

使用EnumSet

// Do not import anything 

// This creates a Set that contains all posible values 
// In case you need a subset use: EnumSet.of(WallEnums.RES, WallEnums.CAW, etc) 
private static final Set<WallEnums> WALL_CODES = EnumSet.allOf(WallEnums.class); 

// Later... 
if (WALL_CODES.contains(someWallEnum)) { 
    // Do stuff if someWallEnum belongs to WALL_CODES set 
} 

此代碼創建一組枚舉使用優化EnumSet班。然後,您可以像往常一樣使用任何Set操作,即。

1

如果您不希望導入每個枚舉值可以使用

import com.gowallgo.enumtypes.WallEnums 

WallEnums enum = WallEnums.RES; //Now you have to use EnumName.VALUE 
1

你不必導入每個枚舉類型,你可以嘗試導入枚舉的每個元素使用:

import static com.gowallgo.enumtypes.WallEnums.*; 
+0

代碼環境不允許導入星號(idk爲什麼,只是其中一種毛刺類型的東西)我應該提到這一點。 – whatkai 2015-02-10 22:09:50