我在Java中有一个用于基数和中间方向的枚举:
public enum Direction {
NORTH,
NORTHEAST,
EAST,
SOUTHEAST,
SOUTH,
SOUTHWEST,
WEST,
NORTHWEST
}
我怎么能写一个循环,遍历每一个这些枚举值?
我在Java中有一个用于基数和中间方向的枚举:
public enum Direction {
NORTH,
NORTHEAST,
EAST,
SOUTHEAST,
SOUTH,
SOUTHWEST,
WEST,
NORTHWEST
}
我怎么能写一个循环,遍历每一个这些枚举值?
当前回答
枚举类型的所有常量都可以通过调用该类型的隐式公共静态T[] values()方法来获得:
for (Direction d : Direction.values()) {
System.out.println(d);
}
其他回答
枚举类型的所有常量都可以通过调用该类型的隐式公共静态T[] values()方法来获得:
for (Direction d : Direction.values()) {
System.out.println(d);
}
java 8中的更多方法:
使用EnumSet和forEach
EnumSet.allOf(Direction.class).forEach(...);
使用数组。asList with forEach
Arrays.asList(Direction.values()).forEach(...);
我们可以像这样使用一个过滤器(JAVA 8)。
Stream.of(Direction.values()).filter(name -> !name.toString().startsWith("S")).forEach(System.out::println);
. values ()
您可以在枚举上调用values()方法。
for (Direction dir : Direction.values()) {
// do what you want
}
这个values()方法由编译器隐式声明。所以它没有列在Enum文档中。
你可以这样做:
for (Direction direction : EnumSet.allOf(Direction.class)) {
// do stuff
}