2010-07-22 14 views
18

Hat Java die Möglichkeit von anonymen enums?Java: anonyme enums?

Zum Beispiel möchte ich, dass meine Klasse eine Variable hat, deren Wert eine von 5 verschiedenen Einstellungen sein kann. Also sollte diese Variable offensichtlich ein Enum sein. Aber das ist der EINZIGE Ort, an dem diese spezielle Enum verwendet wird. Normalerweise würde ich einen Aufzählungstyp direkt über der Variablen deklarieren und dann die Variable als diesen Typ deklarieren, aber ich frage mich, ob es einen saubereren Weg gibt. Unterstützt Java anonyme Enums?

Beispiel:

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

Gibt es eine Möglichkeit public enum Option erklären zu vermeiden und stattdessen einfach erlauben die Option Variable gesetzt werden entweder FirstOption, SecondOption oder ThirdOption ohne Vorstellung von der „Option“ Typ?

Antwort

19

Nein Java unterstützt keine anonymen enum s.

erklären sie einfach in der Klasse ohne externe Sichtbarkeit:

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

    Option option; 
} 
+0

Wie Sie einen Wert 'option' von einer externen Klasse zuweisen, wenn der Aufzählungstyp ist privat? Welchen Nutzen hat die Einstellung seines Typs privat? – Ricket

+0

@Ricket im obigen Beispiel, 'Option' kann nur innerhalb der'Test'-Klasse aufgerufen werden, was Sie beschrieben haben wollen –

+0

Wie wollten Sie es zuweisen, wenn es anonym war? Wenn Sie die Enumeration auf privat setzen, können Sie sie vor Benutzern Ihrer API verbergen. Sie können den Wert von außen zuweisen, indem Sie einen 'String' nehmen und' Option.valueOf (String) 'oder eine beliebige andere Eingabeanzeige verwenden. Im Allgemeinen macht es keinen Sinn, Enums zu anonymisieren oder zu verbergen, wie Sie es wünschen. –