枚举
程序员文章站
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),代码更优雅。
上一篇: 父作用域发送广播给子作用域