是否可以在不重复循环的情况下遍历任何枚举?
说我有两个枚举。
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中避免整个循环复制的最佳方法是什么?
答案 0 :(得分:7)
使用泛型,例如:
public <E extends Enum<E>> void loopEnum( Class<E> enumClass ) {
for( E e : enumClass.getEnumConstants() ) {
System.out.println( e.toString() );
}
}
所以基本上你告诉方法它应该接受任何枚举类,即一个扩展Enum<E>
的枚举,隐含的是枚举。