Java 枚举

本文介绍了Java枚举的基础用法及高级特性,包括简单的枚举定义、带构造方法的枚举、枚举与switch语句的结合,并通过一个实战案例展示了枚举在错误响应中的应用。

简介:

Java枚举现在越来越强。

以前没有枚举的时候,全是用常量,这个太low了。

有枚举的话,可以直观的、比常量更简洁、更加拟人的方式,非常棒。

1、最简单的枚举 - Color

package com.maizijf.test.testenum;


public enum Color {
    RED,GREEN,BLUE;
}

1.1、使用这个最简单的枚举

 @Test
    public  void testEnum(){
        Color color=Color.RED;
        System.out.println(color.name());
        System.out.println(color.ordinal());
        System.out.println(Arrays.toString(Color.values()));
    }

发现:enum其实继承Enum类,会强制实现父类里面的构造方法

protected Enum(String name, int ordinal) {
        this.name = name;
        this.ordinal = ordinal;
    }

因此,enum会有父类的2个属性name,ordinal,一个是名称,一个是顺序。

 

2、带构造方法的

package com.maizijf.test.testenum;

public enum Color {
    RED(10),GREEN(20),BLUE;
    private  int color;
    private  Color(){//无参构造方法,建议保留,专业写法

    }
    private  Color(int color){
        this.color=color;
    }
    public int getColor() {
        return color;
    }
}

2.1、测试

@Test
    public void test2(){
        Color color=Color.BLUE;
        System.out.println(color.name());//blue
        System.out.println(color.ordinal());//2
        System.out.println(color.getColor());//0
        System.out.println(Arrays.toString(Color.values()));//red,green,blue
    }

 

3、和switch结合

@Test
    public  void test3(){
        Color color=Color.BLUE;
        switch (color){
            case RED:
                System.out.println("red matched");
            case GREEN:
                System.out.println("red matched");
            case BLUE:
                System.out.println("blue matched");
                default:
                    System.out.println("None matched");
        }
    }

 

4、实战

3.1、ResponseNum代码

package com.myenum;

/**
 * Created by Germmy on 2018/3/31.
 */
public enum ResponseEnum {

    SUCCESS("0000000", "success"), PASSWORD_NOT_EXIST("1000001", "specified id is not exist");


    private String errorCode;
    private String errorMessage;

    ResponseEnum(String errorCode, String errorMessage) {
        this.errorCode = errorCode;
        this.errorMessage = errorMessage;

    }

    public String getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(String errorCode) {
        this.errorCode = errorCode;
    }

    public String getErrorMessage() {
        return errorMessage;
    }

    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }
}

 

3.2、单元测试

@Test
    public  void  testDoubleEnum(){
        ResponseEnum re=ResponseEnum.SUCCESS;
        System.out.println(re.getErrorCode());
        System.out.println(re.getErrorMessage());
    }

 

参考资料1

参考资料2

 

 

转载于:https://my.oschina.net/windows20/blog/1788016

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值