2010-07-22 22 views
18

Czy Java ma możliwość anonimowych wyliczeń?Java: anonimowe wyliczenia?

Na przykład chcę, aby moja klasa miała jedną zmienną, której wartością może być jedno z 5 różnych ustawień. Więc oczywiście ta zmienna powinna być wyliczeniem. Ale to jest TYLKO miejsce, w którym będzie używane to wyliczenie. Zwykle zadeklarowałbym typ enum tuż nad zmienną, a następnie zadeklarowałam, że zmienna jest tego typu, ale zastanawiałem się, czy istnieje czystszy sposób. Czy Java obsługuje anonimowe wyliczenia?

Przykład:

public class Test { 
    public enum Option { 
     FirstOption, 
     SecondOption, 
     ThirdOption 
    } 
    Option option; 
} 

Czy istnieje sposób, aby uniknąć oświadczając public enum Option i zamiast po prostu pozwolić zmienna opcja być ustawiony na FirstOption, SecondOption lub ThirdOption bez pojęciem „Option” typu?

Odpowiedz

19

Nie Java nie obsługuje anonimowych enum s.

Wystarczy zadeklarować je wewnątrz klasy bez zewnętrznej widoczności:

public class Test { 
    private static enum Option { 
    FirstOption, 
    SecondOption, 
    ThirdOption 
    } 

    Option option; 
} 
+0

Jak przypisać wartość 'option' z klasy zewnętrznej, jeśli typ enum jest prywatne? Jakie korzyści daje ustawienie tego typu na prywatny? – Ricket

+0

@Ricket w powyższym przykładzie, "Opcja" może być dostępna tylko w klasie "Test", co opisałeś chcąc –

+0

Jak zamierzałeś ją przypisać, gdy była anonimowa? Ustawienie Enum na prywatne pozwala ukryć je przed użytkownikami api. Możesz przypisać wartość z zewnątrz, biorąc 'String' i używając' Option.valueOf (String) 'lub dowolnego wskazania wejścia, które naprawdę chcesz. Generalnie nie ma sensu anonimizować ani ukrywać Enumów, o które prosisz. –