Por que arquivos de classe diferentes são criados para cada tipo de enumeração se eles têm um método específico de constante?

eu tenho um enum como

enum OperationsType {
  ADD("+"), SUB("-"), DIV("/"), MUL("*");

  private String opcodes;

  private OperationsType(String opcodes) {
    this.opcodes = opcodes;
  }

  public String toString() {
    return this.opcodes;
  }
}

Aqui todo tipo de enum não possui nenhumconstant Specific method tãojavac está criando apenas um arquivo de classe paraenum Como

OperationsType.class

mas se eu adicionarconstant Specific method no mesmo código para todo o tipo de enum entãojavac está criando 5 arquivos de classe.

Operations.class
Operations$1.class
Operations$2.class
Operations$3.class
Operations$4.class

para o código abaixo

enum Operations {
ADD("+") {
    public double apply(double a, double b) {
        return a + b;
    }
},
SUB("-") {
    public double apply(double a, double b) {
        return a - b;
    }
},
DIV("/") {
    public double apply(double a, double b) {
        return a / b;
    }
},
MUL("*") {
    public double apply(double a, double b) {
        return a * b;
    }
};

private String opcodes;

private Operations(String opcodes) {
    this.opcodes = opcodes;
}

public abstract double apply(double a, double b);
}

Então, eu duvido disso porquecompiler criou 4 classes diferentes para cadaenum type se eles estão tendoconstant Specific method mas não criando classes diferentes se elas não tiveremconstant Specific method?

questionAnswers(2)

yourAnswerToTheQuestion