En Java, ce sont les types enum à l'intérieur d'une classe statique?
Je n'arrive pas à accéder exemple, être des membres de l'entourage de la classe de l'intérieur d'une énumération, comme j'ai pu à l'intérieur d'un intérieur de classe. Est-ce à dire enums sont statiques? Est-il un accès à la portée de l'entourage de la classe de l'instance, ou dois-je passer l'instance dans l'enum méthode où j'en ai besoin?
public class Universe {
public final int theAnswer;
public enum Planet {
//...
EARTH(...);
//...
//... constructor etc.
public int deepThought() {
//-> "No enclosing instance of type 'Universe' is accessible in this scope"
return Universe.this.theAnswer;
}
}
public Universe(int locallyUniversalAnswer) {
this.theAnswer = locallyUniversalAnswer;
}
}
- Je ne suis pas sûr que je comprends tout à fait ce que vous essayez de décrire. pouvez-vous donner un petit exemple de code peut-être?
Vous devez vous connecter pour publier un commentaire.
Oui, imbriqués les énumérations sont implicitement statique.
De la spécification du langage à l'article 8.9:
Il ne serait pas judicieux de créer une instance de niveau (non statique) intérieure enum class - si le énumérer les instances étaient eux-mêmes liés à l'extérieur de la classe qu'ils avaient briser la enum garantie -
par exemple, si vous avez eu
Pour les valeurs enum pour bien agir comme des constantes, (psuedocode, en ignorant les restrictions d'accès)
b1 et b2 devraient être les mêmes objets.