是否可以在不重复循环的情况下循环任何枚举?
假设我有两个枚举。
public enum Type {
X("x type"),
Y("y type"),
Z("z type"),
private String text;
private Type(String text) {
this.text = text;
}
@Override
public String toString() {
return text;
}
}
public enum Size {
SMALL("tiny"),
MED("mid"), ...
private String text;
private Size(String text) {
this.text = text;
}
@Override
public String toString() {
return text;
}
}
我可以像这样循环遍历各个枚举:
for (Type type : Type.values()) {
... do something with type.name(), type.toString()
}
for (Size s : Size.values()) {
... do "the same" something with s.name(), S.toString()
}
是否可以循环遍历它们,而无需为每个枚举类型重复代码?避免 Java 中整个循环重复的最佳方法是什么?
最佳答案
使用泛型,即像这样:
public <E extends Enum<E>> void loopEnum( Class<E> enumClass ) {
for( E e : enumClass.getEnumConstants() ) {
System.out.println( e.toString() );
}
}
所以基本上你告诉该方法它应该接受任何枚举类,即扩展Enum<E>
的枚举类。枚举的情况就是如此。
关于java - 在 Java 中循环遍历枚举而不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25400989/