enum FruitEnum { APPLE(1), ORANGE(2); // 调用构造函数来构造枚举项 private int value = 0; private FruitEnum(int value) { // 必须是private的,不然编译错误 this.value = value; } public static FruitEnum valueOf(int value) { // 手写的从int到enum的转换函数 switch (value) { case 1: return APPLE; case 2: return ORANGE; default: return null; } } public int value() { return this.value; } } public static void main(String[] args) { System.out.println(FruitEnum.APPLE.value()); // 1 System.out.println(FruitEnum.ORANGE.value()); // 2 System.out.println(FruitEnum.valueOf(1)); // FruitEnum.APPLE System.out.println(FruitEnum.valueOf(2)); // FruitEnum.ORANGE }
枚举项的值从0开始递增可使用ordinal取枚举项在整个枚举中的位置(0开始相似数组下标)数组
enum MyEnum{ FIRST_ELEMENT, SECOND_ELEMENT, } public static void main(String[] args) { System.out.println(MyEnum.FIRST_ELEMENT.ordinal()); // 0 System.out.println(MyEnum.SECOND_ELEMENT.ordinal()); // 1 System.out.println(MyEnum.values()[0]); // MyEnum.FIRST_ELEMENT System.out.println(MyEnum.values()[1]); // MyEnum.SECOND_ELEMENT }