编译时枚举类索引器可以通过在枚举类中定义一个静态属性和一个静态方法来实现。下面是一个示例代码:
public class EnumIndexerExample {
public enum DayOfWeek {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
private static final DayOfWeek[] values = values();
public static DayOfWeek fromOrdinal(int ordinal) {
if (ordinal < 0 || ordinal >= values.length) {
throw new IndexOutOfBoundsException("Invalid ordinal");
}
return values[ordinal];
}
}
public static void main(String[] args) {
DayOfWeek day = DayOfWeek.fromOrdinal(3);
System.out.println(day); // Output: THURSDAY
// Invalid ordinal
day = DayOfWeek.fromOrdinal(7); // Throws IndexOutOfBoundsException
}
}
在上述示例中,我们定义了一个枚举类DayOfWeek
,其中包含一个静态属性values
,它保存了枚举类的所有实例。然后,我们定义了一个静态方法fromOrdinal
,该方法接受一个整数参数ordinal
,并根据该参数返回对应的枚举实例。
在main
方法中,我们通过调用DayOfWeek.fromOrdinal
方法来获取具有给定序号的枚举实例,并进行输出。如果传递的序号超出了有效范围,将抛出IndexOutOfBoundsException
异常。
这种方法可以让我们通过索引来获取枚举实例,而不是使用枚举值的名称。
上一篇:编译时枚举-字符串-整数对