O que é enum?

Olá pessoal ,

estou estudando referente ao enum e gostaria de entender esse comando se alguém pude me ajudar agradeceria.

abs

Paulo

enum Towns1{NY, LA, SF} 

  public class DeclareEnum {

    enum Towns2{NY, LA, SF};

    public static void main(String [] args) {
      enum Towns3{NY, LA, SF};
    }

http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html

Enum é um tiop de dados criado por você comvalores pré-definidos por você. utilizando enums, seu código fica mais legível.

Márcio

Só completando seu exemplo.

// Declara o enum Towns1, com os valores Towns1.NY, Towns1.LA e Towns1.SF
enum Towns1{NY, LA, SF} 
 
public class DeclareEnum {
    // Declara o enum DeclareEnum.Towns2, com os valores
    // DeclareEnum.Towns2.NY, DeclareEnum.Towns2.LA e DeclareEnum.Towns2.SF
    enum Towns2{NY, LA, SF};
 
    public static void main(String [] args) {
// A linha a seguir não compila:   
//       enum Towns3{NY, LA, SF}; 
// O erro que o compilador emite:
// "enum types must not be local"
    
        System.out.println (Towns1.NY); // imprime "NY"
        System.out.println (Towns2.NY); // imprime "NY"
// A linha a seguir não compila:        
//        System.out.println (Towns1.NY == Towns2.NY); 
// erro: incomparable types: Towns1 and DeclareEnum.Towns2    
    }
}

Aproveitando: quando voces tem uma classe de modelo que tem um atributo de um tipo enum, o que usam pra persistir esse objeto no Hibernate? (sem considerar uma tabela que tenha os dados da enum, ai seria um relacionamento N-1 normal)

Atualmente associo cada elemento da enum com um codigo, deixo o atributo transient e faco metodos especiais pra carregar/obter o codigo do elemento da enum correspondente. Tem outro jeito melhor?

Marcio Kuchma