Duvida de Enum

Fala galera…

Tenho uma duvida na utilização do enum.

Gostaria de saber como seria a utilização desse tipo sendo recuperado o valor do banco de dados. …

por exemplo em uma tabela usuário nos temos um tipo sei la … funcionario, cliente certo com o valor 1,2 e no java na minha entidade usuário criei um tipo enumerado sendo funcionario e cliente tb com os valores FUNCIONARIO(1), CLIENTE(2) …

Recuperando os usuários da tabela e populando uma entidade como eu faria com o tipo, teria que fazer um loop no meu enum e um if ??? ou teria uma forma mais inteligente de utilização ???

obrigado.

Rodrigo

Bom, vamos lá.

Primeiro, o ideal seria você incluir no seu tipo enumerado, um método estático para a busca de acordo com o atributo no qual você quer fazer a busca. Algo como no exemplo abaixo:

public enum Coisas {
   João(1), Maria(2), Jose(3);

   private int id;
   public int getId() {return this.id;}
   

   Coisas(int valor) {this.id = valor;}

   public static Coisas getCoisa(int id)
   {
        for (Coisas coisa : values())
              if (coisa.getId() == id)
                     return coisa;
        return null;
    }
}

Na sua classe, aonde o tipo enumerado está definido, você pode criar métodos gets e sets virtuais. Algo como no exemplo abaixo:

  public class Classe {

      private Coisas coisa;
      public int getIdCoisa() {return coisa == null ? -1 : coisa.getId();}
      public void setCoisa(int valor) {this.coisa = Coisas.getCoisa(valor);}
   }

Então, você não acessaria diretamente O tipo enumerado, mas sim os gets e sets “virtuais” que citei acima.

falando de enum…gostaria de tirar um duvida com os amigos…

o enum seria um structs no c/c++???

teria alguma relação e a galera da sun sentiu necessidade de esta copiando???

(acho que escrevi structs certo…)

vlw

Não.

O enum é completamente diferente dos structs do C/C++. Na realidade, é uma classe, só que com algumas limitações, como por exemplo com relação aos construtores.

Ao contrário do enum do C, que consiste apenas em um inteiro glorificado, o enum em Java é uma classe, e você pode definir atributos e comportamentos à ela.

Show de bola … vlw pela dica …

[]'s

Rodrigo