2015-02-10 4 views
1

Итак, вот моя ситуация. Я сравниваю две ситуации WallEnums с остальными.сравнить значения в enum 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

Что вам не понравилось? –

+2

'import static com.gowallgo.enumtypes.WallEnums. *'? – vikingsteve

+2

Использовать 'Enum.values ​​()'? – meskobalazs

ответ

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

Смежные вопросы