¿Por qué las implementaciones enum no pueden acceder a campos privados en la clase enum?

Acabo de responder esta pregunta diciendo cómo resolver el problema de compilación:

¿Cómo usar los campos en Java Enum anulando el método?

Pero lo que no entiendo es por qué el error está ocurriendo en primer lugar.

Aquí está el ejemplo escrito como una enumeración:

public enum MyEnum {


    FIRST {
        @Override
        public String doIt() {
            return "1: " + someField; //error
        }
    },
    SECOND {
        @Override
        public String doIt() {
            return "2: " + super.someField; //no error
        }
    };

    private String someField;


    public abstract String doIt();

} 

Aquí es exactamente lo mismo que las clases abstractas

abstract class MyClass {
    class FIRST extends MyClass {
        @Override
        public String doIt() {
            return "1: " + someField; //no error
        }
    };
    class SECOND extends MyClass {
        @Override
        public String doIt() {
            return "2: " + super.someField; //no error
        }
    };

    private String someField;

    public abstract String doIt();
}

En el caso deFIRST dentro deenum implementación a la que no puede accedersomeField. Sin embargo, en el caso de la clase abstracta sí puede.

Añadiendo adicionalmentesuper soluciona el problema, al igual que eliminar elprivate modificador en el campo.

¿Alguien sabe por qué está ocurriendo esta ligera peculiaridad en el comportamiento?

Respuestas a la pregunta(4)

Su respuesta a la pregunta