dÚvida enum

2 respostas
Gustavo_Santos

BOA TARDE GALERA !

Estou com uma dúvida aqui:

public class Test {
	
	public enum Dogs { collie, harrier };

	public static void main(String[] args) {
		Dogs myDog = Dogs.collie;
		switch (myDog) {
			case collie:
				System.out.print("collie ");
			case harrier:
				System.out.print("harrier ");
		}
	}
}

Porque enum Dogs pode ser acessada no main :roll: ?!
Ela não é um componente de instância não :roll: !?

Grato !!

2 Respostas

ViniGodoy

Um enum é uma classe. Esse código é mais ou menos equivalente a isso aqui:

public class Test {   	

   public class Dogs {
      public static final Dogs collie = new Dogs();
      public static final Dogs harrier = new Dogs();
   }

   public static void main(String[] args) {
      Dogs myDog = Dogs.collie;
      switch (myDog) {
         case collie:
            System.out.print("collie ");
         case harrier:
            System.out.print("harrier ");
      }
   }
}
Agora, a melhor maneira de reescrever esse código seria se aproveitar do fato que o enum é uma classe e usar o Polimorfismo:
public class Test {	
   public enum Dogs { 
      collie("collie"), 
      harrier("harrier");

      private String description;
      
      public Dogs(String description) {
         this.description = description;
      }

      public String getDescription() {
         return description;
      } 
   }

   public static void main(String[] args) {
      Dogs myDog = Dogs.collie;
      System.out.print(myDog.getDescription() + " ");
   }
}
Gustavo_Santos

blz… Vlw ViniGodoy !

Criado 4 de setembro de 2010
Ultima resposta 4 de set. de 2010
Respostas 2
Participantes 2