Un bucle ‘for’ para iterar sobre una enumeración en Java

Tengo una enum en Java para las direcciones cardinales e intermedias:

 public enum Direction { NORTH, NORTHEAST, EAST, SOUTHEAST, SOUTH, SOUTHWEST, WEST, NORTHWEST } 

¿Cómo puedo escribir un bucle for que itere a través de cada uno de estos valores enum ?

.values()

Puede llamar al método values() en su enumeración.

 for (Direction dir : Direction.values()) { // do what you want } 

Este método values() es implícitamente declarado por el comstackdor . Por lo tanto, no aparece en la lista de Enum doc.

Enum # values ​​():

  for (Direction d : Direction.values()) { System.out.println(d); } 

Puedes hacer esto de la siguiente manera:

 for (Direction direction : EnumSet.allOf(Direction.class)) { // do stuff } 

Corrientes

Antes de Java 8 necesitamos imprimir los valores usando for loop, como:

 for (Direction dir : Direction.values()) { System.out.println(dir); } 

Pero en Java 8 también podemos hacer uso de lambda y streams ( Tutorial ):

 Stream.of(Direction.values()).forEach(System.out::println); 
 for(Direction dir : Direction.values()) { } 

Si no le importa el orden, esto debería funcionar:

 Set directions = EnumSet.allOf(Direction.class); for(Direction direction : directions) { // do stuff } 
  for (Direction d : Direction.values()) { //your code here } 

Esta es la forma de iterar sobre Enum:

 private static void iterateEnumValues() { System.out.println("Iterating over Direction enum"); for(Direction direction : Direction.values()) { System.out.println("Enum = " + direction); } } 

Para saber más sobre las operaciones comunes de Enum, verifique esto: Cómo usar Enums en Java

Java8

 Stream.of(Direction.values()).forEach(System.out::println); 

de Java5 +

 for ( Direction d: Direction.values()){ System.out.println(d); } 

Intenta usar un para cada

 for ( Direction direction : Direction.values()){ System.out.println(direction.toString()); } 

Más métodos en java 8:

Usar EnumSet con forEach

 EnumSet.allOf(Direction.class).forEach(...); 

Usar Arrays.asList con forEach

 Arrays.asList(Direction.values()).forEach(...);