69 votes

Pourquoi ne puis-je pas créer un enum dans un intérieur de classe en Java?

Ce que j'essaie de faire est ceci:

public class History {
    public class State {
        public enum StateType {

Eclipse me donne cette erreur de compilation sur StateType: The member enum StateType must be defined inside a static member type.

L'erreur disparaît lorsque je fais de l' State classe statique. J'ai pu faire State statique, mais je ne comprends pas pourquoi je ne peut pas déclarer un enum dans un intérieur de classe.

95voto

Joachim Sauer Points 133411

enum types qui sont définis comme les types imbriqués sont toujours implicitement static (voir JLS §8.9. Les Enums)

Vous ne pouvez pas avoir une statique de type imbriqué à l'intérieur d'un non-statique (un.k.un "intérieure", voir JLS §8.1.3. Les Classes internes et en Joignant les Instances).

Par conséquent, vous ne pouvez pas avoir un enum intérieure de type à l'intérieur d'un non-statique de type imbriqué.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X