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
?