如何获得枚举的可能项目数?

时间:2013-07-05 15:13:12

标签: java enums

是否有一种内置方法可以获取枚举的项目数量,例如Myenum.length

或者我必须自己实现一个函数int size()硬编码元素的数量?

5 个答案:

答案 0 :(得分:47)

是的,您可以使用Enum.values()方法获取Enum值数组,然后使用length属性。

public class Main {
    enum WORKDAYS { Monday, Tuesday, Wednesday, Thursday, Friday; }

    public static void main(String[] args) {
        System.out.println(WORKDAYS.values().length);
        // prints 5
    }
}

http://ideone.com/zMB6pG

答案 1 :(得分:10)

您可以使用Myenum.values().length

获取长度

Enum.values()返回所有enum常量的数组。您可以使用此数组的length变量来获取enum常量的数量。

假设你有以下枚举:

public enum Color
{
    BLACK,WHITE,BLUE,GREEN,RED
}

以下语句将5分配给size

int size = Color.values().length;

答案 2 :(得分:3)

MyEnum.values()将枚举常量作为数组返回。

所以你可以使用:

int size = MyEnum.values().length

答案 3 :(得分:3)

enum.values()方法由Java编译器添加,API中未提及。

Where is the documentation for the values() method of Enum?

答案 4 :(得分:2)

为了避免每次都调用values()方法:

public class EnumTest {

    enum WORKDAYS {
       Monday,
       Tuesday,
       Wednesday,
       Thursday,
       Friday;

       public static final int size;
       static {
          size = values().length;
       }
   }


   public static void main(String[] args) {
      System.out.println(WORKDAYS.size); // 5
   }
}