O método get deve existir para todas as enumerações, não só para um dos elementos. Entenda o enum como se tivesse sido declarado assim:
public class Pferde {
public static final Pferde PONY = new Pferde(10);
public static final Pferde ESEL = new Pferde(15) {
public int get() {
return 15;
}
}
public static final Pferde MULI = new Pferde(20);
}
Note que todos se "nivelam" pela interface de Pferde. Para corrigir o seu código, faça o seguinte:
class A {
enum Pferde {
PONY(10), ESEL(15), MULI(20);
private int value;
Pferde(int i) { value = i; }
//Get é declarado para qualquer enum
public int get() {return value;}
};
public static void main(String[] args) {
System.out.println(Pferde.ESEL.get());
}
}
Ou ainda assim:
class A {
enum Pferde {
PONY {public int get() { return 10; }},
ESEL {public int get() { return 15; }},
MULI {public int get() { return 20; }};
//Get ainda é declarado para qualquer enum
public abstract int get();
};
public static void main(String[] args) {
System.out.println(Pferde.ESEL.get()); //erro!
}
}
PS: Não compilei nenhum, pode ter algum erro bobo, como esquecer os parênteses ou chaves.
Para mais informações, leia o capítulo 5 do Effective Java, substitute for C constructs, no link:
http://developer.java.sun.com/developer/Books/effectivejava/Chapter5.pdf
Ele explica como o enum é implementado por baixo dos panos. Também veja uma aplicação interessante do enum aqui:
http://www.guj.com.br/posts/list/55885.java