Java Enum Part 1

Enum的简单使用

package enumtest;

public enum Enum1 {
    MONDAY, SUNDAY;
    
    public static void main(String[] args) {
        for (Enum1 e : Enum1.values()) {
            System.out.println(e);
        }
    }
}

输出

MONDAY
SUNDAY

嵌套使用

package enumtest;

import java.util.Random;

public enum Test {
    /** 注意此处枚举实例的写法
     * 首先枚举实例必须在其他所有方法之前声明
     * 然后是他的语法,如果你有一个 EAT(String) 的枚举实例
     * 则你下面必须也有一个同名的构造方法,例如 Test(String s)
     *  **/
    EAT(Food.Eat.class),
    DRINK(Food.Drink.class);
    
    /** 为了实现枚举的嵌套使用,这里使用接口
     * 注意接口内的枚举必须要实现接口
     * 否则下面的构造方法将无法通过一个方法就获得不同类型的枚举的所有实例
     *  **/
    interface Food {
        enum Eat implements Food { BEEF, PORK, RICE, BREAD };
        enum Drink implements Food { JUICE, WATER, BEER, WINE };
    }
    
    private Random rand = new Random(47);
    private Food[] values;

    private Test(Class<? extends Food> kind) {  // 此处必须要有和枚举实例同名的构造方法
        values = kind.getEnumConstants();
    }
    
    private Food randomSelect() {
        return values[rand.nextInt(values.length)];
    }
    
    public static void main(String[] args) {
        // 生成菜单
        for (int i = 0; i < 4; i++) {
            for (Test food : Test.values()) {
                System.out.println(food.randomSelect());
            }
            System.out.println("----------------------");
        }
    }
}

输出

RICE
BEER
----------------------
PORK
WATER
----------------------
RICE
BEER
----------------------
BEEF
JUICE
----------------------

原文地址:https://www.cnblogs.com/zemliu/p/2915091.html