【问题标题】:Loop through enums without duplication in Java在Java中循环遍历枚举而不重复
【发布时间】:2014-08-20 09:16:49
【问题描述】:

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

假设我有两个枚举。

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中整个循环重复的最佳方法是什么?

【问题讨论】:

    标签: java enums


    【解决方案1】:

    使用泛型,例如:

    public <E extends Enum<E>>  void loopEnum( Class<E> enumClass ) {
      for( E e : enumClass.getEnumConstants() ) {
        System.out.println( e.toString() );
      }
    }
    

    所以基本上你是在告诉方法它应该接受任何枚举类,即一个扩展 Enum&lt;E&gt; 的类,这隐含地是枚举的情况。

    【讨论】:

    • 太棒了。泛型的力量:)
    • ... 和反思 :) - 但一如既往“权力越大,责任越大”
    • @Thomas 你是托马斯·韦恩吗? :P
    • @KumarAbhinav 从另一个世界发帖 ;)
    猜你喜欢
    • 2013-05-16
    • 2011-09-04
    • 2015-01-09
    • 2011-05-07
    • 2021-08-24
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多