2015-02-10 116 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