Usando enum

6 respostas
E

Pessoal, boa noite.
Como posso usar enum em java5?
O código abaixo dá errro de compilação . . .
Obrigado,
Evandro

class Teste1 {

enum Atributo { WINTER, SPRING, SUMMER, FALL };

public boolean valorOk( int i ){

if( i == Atributo.WINTER ) return true;

return false;	

}

}

6 Respostas

C

Qual versão do Java você está usando? Tem que ser a partir da 5.0.

C

Ah e tire esse ponto-e-vírgula depois da última chave do enum.

L

Ue? vc pode comparar um int com um enum?!

public boolean valorOk( int i ){
if( i == Atributo.WINTER ) return true;

Eu acho que naum, naum seria algo como

public boolean valorOk( Atributo i ){
if( i == Atributo.WINTER ) return true;
E

Pessoal, desculpe a demora em retornar.

Seguinte:
O java que estou usando é java 1.5.0_07-b03.
Fiz até um teste com: for (Integer elem : lista) { blá blá blá
e isto funcionou normal

Tirei o ponto e vírgula que estava sobrando, conforme recomendação, mas continua com erro.

Pergunta: Os valores enum não correspondem a números inteiros, onde a primeira ocorrência vale 0, a segunda vale 1, e assim por diante ?

Eu cheguei a testar isto logo que o java5 foi lançado, e me lembro que na época funcionou. Só que agora não sei o que estou fazendo de errado . . .

Ahh, a mensagem de erro que dá é ‘incompatible types: int and Teste1.Atributo’

Obrigado,
Evandro

L

Não, enum eh como se fosse uma classe… pode possuir métodos, atributos etc

Olha por exemplo, pode possuir métodos abstratos, sobrescrever métodos etc.

public enum Atributo
   {
      WINTER
      {
         String e()
         {
            return "Inverno";
         }
      },

      SUMMER
      {
         String e()
         {
            return "Verao";
         }
      };

      abstract String e();

      public String toString()
      {
         return e();
      }

   }

Ai comparando eles por exemplo:

public Atributo x()
   {
      return Atributo.SUMMER;
   }

   public static void main(String[] args)
   {
      Atributo z = new Enums().x();
      if (z == Atributo.SUMMER)
      {
         System.out.println(z);
      }
      System.out.println(Atributo.SUMMER == Atributo.WINTER);
      System.out.println(Atributo.WINTER == Atributo.WINTER);
      System.out.println(Atributo.SUMMER == Atributo.SUMMER);
      //System.out.println(Atributo.SUMMER == 1);  //isso da erro e compilação
   }

Repare que comparo “Atributo” com “Atributo”, sempre, pode até criar métodos que retorna “Atributo” e se tento comparar um “Atributo” com int, ai da erro de compilação…

da uma olhada se vc entende, qq coisa… isso ai eh o que eu sei mais ou menos de enums hehe pode ser que tenha mais coisas ainda.

E

valeu aí pelas dicas.

tks,
Evandro

Criado 21 de outubro de 2006
Ultima resposta 23 de out. de 2006
Respostas 6
Participantes 3