枚举的妙用
Posted lexiaoyao1995
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了枚举的妙用相关的知识,希望对你有一定的参考价值。
单例
A single-element enum type is often the best way to implement a singleton.
单元素的枚举类型已经成为实现Singleton的最佳方法。
一般有两种方式,对于比较简单的效果实现,可以直接在枚举里写方法。
public enum TestEnum {
Instance;
public void method() {
System.out.println("test");
}
}
另外一种更使用的方式,将单例的类放入枚举类中。
public enum TestEnum {
Instance;
private Person person;//将单例资源类放入枚举
TestEnum() {
person = new Person();
}
public Person getPerson() {
return person;
}
}
这样当我们调用TestEnum.Instance.getPerson()则获取到对应的单例实例。
代替if判断
可以把枚举看作一个小型数据库。
有这样一种场景,需要对每个数组转为字符串。
public String getDay(int n) {
if (n == 1) return "星期一";
if (n == 2) return "星期二";
if (n == 3) return "星期三";
if (n == 4) return "星期四";
if (n == 5) return "星期五";
if (n == 6) return "星期六";
if (n == 7) return "星期天";
return null;
}
用枚举实现
import java.util.Arrays;
import java.util.Optional;
public enum TestEnum {
ONE(1, "星期一"),
TWO(2, "星期二"),
Three(3, "星期三"),
Four(4, "星期四"),
Five(5, "星期五"),
Six(6, "星期六"),
Seven(7, "星期七");
private Integer num;
private String str;
public int getNum() {
return num;
}
public String getStr() {
return str;
}
TestEnum(Integer i, String str) {
this.num = i;
this.str = str;
}
public static String getDay(Integer num) {
TestEnum[] values = TestEnum.values();
Optional<TestEnum> first = Arrays.stream(values).filter(i -> i.getNum() == num).findFirst();
return first.map(TestEnum::getStr).orElse(null);
}
}
以上是关于枚举的妙用的主要内容,如果未能解决你的问题,请参考以下文章
深入浅出妙用 Javascript 中 applycallbind
[转]深入浅出妙用 Javascript 中 applycallbind