JAVA ENUM 扩展使用

enum

base

  • 常见的枚举使用场景十分简单。举个例子,写个枚举类标记不同的水果。
public enum Fruit {
    APPLE,
    ORANGE,
    BANANA;
}

Advanced 1

  • 进阶为水果加上中文名称
public enum Fruit {
    APPLE("苹果"),
    ORANGE("橘子"),
    BANANA("香蕉");

    public final String cnName;

    Fruit(String cnName) {
        this.cnName = cnName;
    }
}
  • eg. 获取中文名称
System.out.ptintln(Frut.APPLE.cnName);
System.out.ptintln(Frut.ORANGE.cnName);
System.out.ptintln(Frut.BANANA.cnName);

Advance 2

  • 不同的水果有不同的处理方式,比如香蕉需要包皮了才能够吃,那么为不同的水果加上不同的预处理方式.
public enum Fruit {
    APPLE("苹果"){
        @Override
        public void preHandle() {
            super.preHandle();
            System.out.println("啊啊啊,我被削皮了");
        }
    },
    ORANGE("橘子"){
        @Override
        public void preHandle() {
            super.preHandle();
            System.out.println("啊啊啊,我被剥皮了");
        }
    },
    BANANA("香蕉"){
        @Override
        public void preHandle() {
            super.preHandle();
            System.out.println("啊啊啊,我被剥皮了");
        }
    };

    public final String cnName;

    Fruit(String cnName) {
        this.cnName = cnName;
    }

    public void preHandle() {
        System.out.println(this.name() + ":开始被预处理了");
    }

    public static void main(String[] args) {
        Fruit.APPLE.preHandle();
    }
}
  • eg 运行程序中的main方法。可以得到如下输出
Connected to the target VM, address: '127.0.0.1:62224', transport: 'socket'
APPLE:开始被预处理了
啊啊啊,我被削皮了
Disconnected from the target VM, address: '127.0.0.1:62224', transport: 'socket'

♂️是不是很神奇,有没有些顿悟啦,是不是很多操作都可以用这种方法标记呢?

你可能感兴趣的:(JAVA ENUM 扩展使用)