dÚvida enum

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 !!

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

[code]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 ");
}
}
}
[/code]

Agora, a melhor maneira de reescrever esse código seria se aproveitar do fato que o enum é uma classe e usar o Polimorfismo:

[code]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() + " ");
}
}
[/code]

blz… Vlw ViniGodoy !