2010-07-22 5 views
18

Est-ce que Java a la possibilité d'énumérations anonymes? Par exemple, je veux que ma classe ait une variable, dont la valeur peut être l'une des 5 configurations différentes. Donc, évidemment, cette variable devrait être une énumération. Mais c'est le seul endroit où cette énumération particulière sera utilisée. Normalement, je voudrais déclarer un type enum juste au-dessus de la variable, puis déclarer la variable à ce type, mais je me demandais s'il y avait une manière plus propre. Java prend-il en charge les énumérations anonymes?Java: énumérations anonymes?

Exemple:

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

est-il un moyen d'éviter de déclarer public enum Option et au lieu de permettre simplement la variable d'option à régler soit FirstOption, SecondOption ou ThirdOption sans notion de type « Option »?

Répondre

19

Aucun Java ne prend en charge anonyme enum s.

Il suffit de les déclarer dans la classe sans visibilité extérieure:

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

    Option option; 
} 
+0

Comment attribuer une valeur à 'option' d'une classe à l'extérieur si le type ENUM est privé? Quel est l'avantage de paramétrer son type privé? – Ricket

+0

@Ricket dans l'exemple ci-dessus, 'Option' ne peut être accédé que dans la classe' Test', ce que vous avez décrit comme voulant –

+0

Comment aviez-vous l'intention de l'assigner quand il était anonyme? Définir Enum sur private vous permet de le cacher aux utilisateurs de votre API. Vous pouvez assigner la valeur de l'extérieur en prenant 'String' et en utilisant' Option.valueOf (String) ', ou n'importe quelle indication d'entrée que vous voulez vraiment. En général, cela n'a aucun sens d'anonymiser ou de cacher les Enums comme vous le demandez. –

Questions connexes