枚举的妙用

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

以上是关于枚举的妙用的主要内容,如果未能解决你的问题,请参考以下文章

二分check的妙用

带有红宝石集合/可枚举的酷技巧和富有表现力的片段[关闭]

深入浅出妙用 Javascript 中 applycallbind

[转]深入浅出妙用 Javascript 中 applycallbind

转---深入浅出妙用 Javascript 中 applycallbind

转---深入浅出妙用 Javascript 中 applycallbind