枚举:

  刚开始项目中没怎么用过,只知道能够实现作为项目中类似定义Constant的功能,然后知道枚举实现的单例模式几乎是最优雅的,所以,

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

想要深入完整的了解一下

 

1、基本特性:

Enum.values()可以遍历enum实例。返回的是enum实例的数组

 

public enum EnumDemo {
    jesen,
    kobe,
    gakki
}
public static void main(String[] args) {
        for (EnumDemo demo : EnumDemo.values()) {
            System.out.println(demo);
        }
    }

 

2、向enum中添加新方法

public enum Status {
        SUCCESS(200, "SUCCESS"),
        BAD_REQUEST(400, "Bad Request"),
        NOT_FOUND(404, "Not Found"),
        INTERNAL_SERVER_ERROR(500, "Unkown Internal Error"),
        NOT_VALID_PARAM(40005, "Not valid Params"),
        NOT_SUPPORTED_OPERATION(40006, "Operation not supported"),
        NOT_LOGIN(50000, "Not Login");

        private int code;
        private String message;

        Status(int code, String message) {
            this.code = code;
            this.message = message;
        }

        public void setCode(int code) {
            this.code = code;
        }

        public void setMessage(String message) {
            this.message = message;
        }

        public int getCode() {
            return code;
        }

        public String getMessage() {
            return message;
        }
    }
使用:Status.SUCCESS.getCode()

 

 类似这样去使用,上面的例子:可以应用到Response返回状态的定义

 

3、switch语句中的enum

public static void main(String[] args) {
        EnumDemo code = EnumDemo.jesen;
        switch (code) {
            case jesen:
                System.out.println("jesen");
                break;
            case kobe:
                System.out.println("kobe");
                break;
            case gakki:
                System.out.println("gakki");
                break;
        }
    }

 

一般来说switch中只能使用整数值,而enum具有整数值的次序,这样显得很简洁

 

4、常量相关的方法

允许为enum实例编写方法

public enum  ConstantSpec {

    DATA_TIME {
        String getInfo() {
            return "DATA_TIME";
        }
    },

    CLASS_PATH {
        String getInfo() {
            return "CLASS_PATH";
        }
    }
}

 

 

5、优雅的实现单例

public enum Singleton {
    INSTANCE;
    public void method() {

    }
}

 

 实现单例就着几行代码,很简洁,很优雅

优点:

  1、解决线程安全问题。enum天生不存在并发安全问题

  2、避免反序列化破坏单例。枚举的反序列化并不通过反射实现。

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄