java学习笔记 --19-- 枚举类型

Java / 2020-04-05

枚举

基本的枚举类型

package com.company;
/**
 * @ClassName Test
 * @Description
 * @Auther liuxiansen
 * @Date 2020/3/29 8:55 上午
 **/
public class Test{
    public static void main(String [] args) {
        for (Fruits s : Fruits.values()){
            System.out.println(s.name() + "  " + s.ordinal() + "  " + s.equals(Fruits.APPLE));
            System.out.println("*************************");
        }
    }

}
enum Fruits{
    APPLE,
    BANANA,
    ORANGE,
    WATERMELON,
    PEAR;
}

使用静态导入:import static com.company.Fruits.*;
就可以去掉枚举类名了
除了不能继承enum之外,可以把enum看做一个普通的类

覆盖enum的方法

public enum Fruits {
    APPLE,
    BANANA,
    ORANGE,
    WATERMELON,
    PEAR;

    public String toString(){
        String id = name();
        return id.charAt(0) + id.substring(1).toLowerCase();
    }
}

可以通过name方法拿到名字

switch与enum

package com.company;
/**
 * @ClassName Test
 * @Description
 * @Auther liuxiansen
 * @Date 2020/3/29 8:55 上午
 **/
import static com.company.Fruits.*;
public class Test{
    public static void main(String [] args) {
        SwitchFruit switchFruit = new SwitchFruit();
        for(int i=0;i<10;i++){
            switchFruit.change();
        }
    }
}

class SwitchFruit{
    Fruits[] s = Fruits.values();
    private int flag = 0;
    public void change(){
        Fruits fruit = s[flag>4?flag=0:flag++];
        switch (fruit){
            case APPLE:
                System.out.println("this is Apple");
                break;
            case BANANA:
                System.out.println("this is Banana");
                break;
            case PEAR:
                System.out.println("this is Pear");
                break;
            case ORANGE:
                System.out.println("this is Orange");
                break;
            case WATERMELON:
                System.out.println("this is Watermelon");
                break;
            default:
                System.out.println("there is nothing");
                break;
        }
    }
}

switch中直接放enum的一个元素

所有的enum都继承自java.lang.Enum类,由于java不支持多继承,所以你的enum不能继承别的类了,但是可以实现一个或多个接口

未完。。