Galera como vocês bem sabem é possível em um enum sobreescrever um método para uma das contantes do enum, porém se eu usar o mesmo recurso para criar um novo método não presente fora da constante em questão eu não consigo acessá-lo, mesmo sendo público! Vejam abaixo e fica mais fácil de entender:
enum MyEnum{
A(1),
B(2){
Integer getI(){return i*i}
public String fazNada(){return "fazendo nada"}
},
C(3),
Integer i;
MyEnum(Integer i){
this.i=i;
}
Integer getI(){
return i;
}
}
class UsaEnum{
public static void main(String[] args){
MyEnum m = MyEnum.A
System.out.println(m.getI()); //escreve 1
MyEnum m2 = MyEnum.B
System.out.println(m2.getI()); //escreve 4 (i*i)
System.out.println(m2.fazNada()); //erro
}
}
Então, o código do enum compila mas não consigo acessar o método na classe de teste. Tem alguma forma de fazer?