java - 在 Java 中循环遍历枚举而不重复

标签 java enums

是否可以在不重复循环的情况下循环任何枚举?

假设我有两个枚举。

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/

相关文章:

swift - 使用比较运算符扩展 Int 枚举

c# - 在个人类别中表示性别

c# - 枚举定义中的波浪号 (~) 是什么?

python - PyQt4 中的 Q_ENUMS

Java 小程序在 iframe 中打开 URL

java - Spring Boot - 上下文初始化期间遇到异常。如何知道错误的原因?

java - .NET/Mono 还是 Java 是跨平台开发的更好选择?

java - 如何使用 Jackson JSON 反序列化枚举列表?

java - 安装 Blackboard Auto Signon 构建 block

java - 在 Android 设备上使用 LibGDX 切换屏幕很慢