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'
♂️是不是很神奇,有没有些顿悟啦,是不是很多操作都可以用这种方法标记呢?