枚举的妙用

单例

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);
    }
}

猜你喜欢

转载自www.cnblogs.com/lexiaoyao1995/p/13379946.html
今日推荐