Raff:
public enum Naipe {
PAUS(20), COPAS(15), ESPADA(10), OURO(5);
private int valor;
private Naipe(int valor){
this.valor = valor;
}
public int getValor(){
return this.valor;
}
}
Aproveitando o exemplo que o Raff deu sobre enum para explicar melhor:
Quando a JVM for carregar o enum Naipe ela vai rodar o construtor que recebe um int. Com isso, as constantes terão seus atributos inicializados com o valor passado como argumento.
Ou seja, você pode fazer:
Naipe.PAUS.getValor(); //Aqui você recebe 20
Naipe.COPAS.getValor(); //Aqui você recebe 15
Naipe.ESPADA.getValor(); //Aqui você recebe 10
Naipe.OURO.getValor(); //Aqui você recebe 5
A diferença de declarar dentro ou fora da classe é que se você estiver fora da classe onde o enum foi declarado você vai precisar informar o caminho da classe para acessar as constantes do enum (como um membro estático).
Java Player:
public class TesteEnum {
enum Cores2 {VERMELHO, VERDE, AZUL}
void foo() {
Cores1 cor1 = Cores1.VERMELHO;
Cores2 cor2 = Cores2.VERMELHO;
}
}
Em uma outra classe você precisaria fazer:
TesteEnum.Cores2.VERMELHO;
thiago.correa:
Enum dentro de uma classe funciona como uma innerclass, ou seja ela não é "visível" para as demais classe, so para a classe onde a mesma se encontra!
Assim como inner classes, O enum é visível em outras classes de acordo com seu nível de acesso. Exemplo, Se uma inner class for public, ela é acessada de outras classes. O mesmo ocorre para o enum.