欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

枚举

程序员文章站 2022-07-15 10:38:35
...

枚举

package Java0507;
enum Sex {
    //此处MALE这些内容的类型不再是int了,而是Sex类型。
    MALE,
    FEMALE,
    OTHER,
}
public class TestEnum {
    /*//需要在代码中表示性别,可以约定:1表示男性,2表示女性,3表示其他
    public static final int MALE = 1;
    public static final int FEMALE = 2;
    public static final int OTHER = 3;
*/
    public static void main(String[] args) {
        Sex sex = Sex.MALE;
        if (sex == Sex.MALE) {
            //针对男性做出一些处理
        }
        //通过刚才定义常量来表示性别,代码可读性是提高了,但是对于下面的场景编译器并没有明确的约束,按理说这个代码
        //是无意义的,但是编译器仍然能正常编译,这是我们不想看到的。
        //int ret = Sex.MALE + 100;//Sex类型就不能和int类型运算了
    }

}

枚举是一个锦上添花的语法机制,它的目的和曾经讲过的final,@Override,abstract差不多,都是让编译器更好地进行检查校验,帮我们尽早发现一些不科学的代码。
枚举的具体语法,核心就是enum关键字,然后在enum内部写上枚举允许的选项即可。
枚举
枚举本质上也是一个类,所以可以在枚举中定义一些属性和方法,但是最好不要这么做,因为“在其位,谋其政”,枚举只是为了让我们更方便的组织多个常量来表示可穷举的概念的。

package Java0507;

import java.util.Arrays;

/**
 * @author wgsstart
 * @creat 2021-05-07 16:13
 */
enum Sex {
    //此处MALE这些内容的类型不再是int了,而是Sex类型。
    MALE,
    FEMALE,
    OTHER,
}
public class TestEnum {
    /*//需要在代码中表示性别,可以约定:1表示男性,2表示女性,3表示其他
    public static final int MALE = 1;
    public static final int FEMALE = 2;
    public static final int OTHER = 3;
*/
    public static void main(String[] args) {
        /*Sex sex = Sex.MALE;
        if (sex == Sex.MALE) {
            //针对男性做出一些处理
        }*/
        //通过刚才定义常量来表示性别,代码可读性是提高了,但是对于下面的场景编译器并没有明确的约束,按理说这个代码
        //是无意义的,但是编译器仍然能正常编译,这是我们不想看到的。
        //int ret = Sex.MALE + 100;//Sex类型就不能和int类型运算了
        System.out.println(Arrays.toString(Sex.values()));//枚举中的成员
        System.out.println(Sex.values().length);//枚举中成员的个数
        Sex sex = Sex.valueOf("MALE");
        if (sex == Sex.MALE) {
            System.out.println("得到一个MALE类型的枚举常量");
        }


    }

}

枚举优点
1:枚举常量更简单安全。
2:枚举具有内置方法(values),代码更优雅。

相关标签: 枚举 枚举类