有没有一种内置的方法来获取 Enum 的项目数,例如Myenum.length
,
还是我必须自己实现一个int size()
硬编码元素数量的功能?
是的,您可以使用该Enum.values()
方法获取枚举值数组,然后使用该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
}
}
您可以通过使用获得长度Myenum.values().length
Enum.values()
返回一个包含所有enum
常量的数组。您可以使用length
此数组的变量来获取enum
常量的数量。
假设您有以下枚举:
public enum Color
{
BLACK,WHITE,BLUE,GREEN,RED
}
以下语句将 5 分配给size
:
int size = Color.values().length;
enum.values() 方法由 Java 编译器添加,API 中未提及。
为了避免每次调用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
}
}
MyEnum.values()
将枚举常量作为数组返回。
所以你可以使用:
int size = MyEnum.values().length
我搜索了 Kotlin 的答案,然后弹出了这个问题。所以,这是我的答案。
enum class MyEnum { RED, GREEN, BLUE }
MyEnum.values().size // 3
这是另一种方法:
inline fun <reified T : Enum<T>> sizeOf() = enumValues<T>().size
sizeOf<MyEnum>() // 3
感谢 Miha_x64 的回答。