Почему разные файлы классов создаются для каждого типа перечисления, если у них есть метод, специфичный для констант?
у меня есть одно перечисление как
enum OperationsType {
ADD("+"), SUB("-"), DIV("/"), MUL("*");
private String opcodes;
private OperationsType(String opcodes) {
this.opcodes = opcodes;
}
public String toString() {
return this.opcodes;
}
}
Здесь все типы enum не имеютconstant Specific method
такjavac
создает только один файл класса дляenum
как
OperationsType.class
но если я добавлюconstant Specific method
в том же коде для всех типов перечисления тогдаjavac
создает 5 файлов классов.
Operations.class
Operations$1.class
Operations$2.class
Operations$3.class
Operations$4.class
для кода ниже
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);
}
Так что я сомневаюсь, почемуcompiler
создал 4 разных класса для каждогоenum type
если они имеютconstant Specific method
но не создавать разные классы, если они не имеютconstant Specific method
?