java开发:枚举的使用

前言:

枚举类型可以取代以往常量的定义方式,即将常量封装在类或接口中。此外,枚举类型还提供了安全检查功能。枚举类型本质上还是以类的形式存在。

举个例子:

假如说我们有个方法要判断参数来知道今天是星期几

初级程序员写法:

public void getMessage(int id) {
        switch (id) {
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期天");
                break;
            default:
                break;

        }
    }

调用的时候传入1到7就行了对吧:getMessage(1);,但是这种方式可读性很差,我TM调你的方法还得看得懂你的方法内容是干嘛的,万一我传个8进去呢,getMessage()没有类型安全检查,别人都不知道要传什么值,

中级程序员写法:

	private static  final int ONE = 1;
    private static  final int TWO = 2;
    private static  final int THREE = 3;
    private static  final int FOUR = 4;
    private static  final int FIVE = 5;
    private static  final int SIX = 6;
    private static  final int SEVEN = 7;

    public void getMessage(int id) {
        switch (id) {
            case ONE:
                System.out.println("星期一");
                break;
            case TWO:
                System.out.println("星期二");
                break;
            case THREE:
                System.out.println("星期三");
                break;
            case FOUR:
                System.out.println("星期四");
                break;
            case FIVE:
                System.out.println("星期五");
                break;
            case SIX:
                System.out.println("星期六");
                break;
            case SEVEN:
                System.out.println("星期天");
                break;
            default:
                break;
        }
    }

这种写法呢也是很常见的,每个常量我都要赋值,还都要声明 private 、static 、 final、数据类型,当常量多了写起来也很烦。

高级程序员写法(使用枚举):

package com.example.bottomsheetdialogapplication.a;
/**
 * @Author: david.lvfujiang
 * @Date: 2019/12/18
 * @Describe:定义枚举类
 */
public enum  MyEnum {
    ONE("星期一"),TWO("星期二"),THREE("星期三"),FOUR("星期四"),FIVE("星期五"),SIX("星期六"),SEVEN("星期天");
    private String week;
    MyEnum(String s){
        week =s;
    }

    public String getWeek() {
        return week;
    }
}

 public void getMessage(MyEnum id) {
        switch (id) {
            case ONE:
                System.out.println(ONE.getWeek());
                break;
            case TWO:
                System.out.println(TWO.getWeek());
                break;
            case THREE:
                System.out.println(THREE.getWeek());
                break;
            case FOUR:
                System.out.println(FOUR.getWeek());
                break;
            case FIVE:
                System.out.println(FIVE.getWeek());
                break;
            case SIX:
                System.out.println(SIX.getWeek());
                break;
            case SEVEN:
                System.out.println(SEVEN.getWeek());
                break;
            default:
                break;
        }
    }

这里要说的是枚举中的常量必须全大写,写法和常量命名规则一样。枚举常量也是对象,因此使用枚举后getMessage()方法的参数只能传入枚举对象,传入其他则编译不过,实现了类型安全检查。可以读性也变好了,我们只需要到枚举类中一看就能知道我们传的参数具体是干嘛的,枚举中的常量写法也很简单。同时枚举也是一个类,它提供了很多方法给我们。

发布了194 篇原创文章 · 获赞 42 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_39027256/article/details/103591902
今日推荐