版权声明:本文为博主原创文章,转载附上地址就可以啦,多交流,一起进步。 https://blog.csdn.net/weixin_30363263/article/details/83897600
1、枚举类是 java.lang.Enum 类的子类,其中RED、GREEN、YELLOW都是Light预定义好的Light的实例。
在运行期间,我们无法再创建新的Enum的实例
public enum Light {
// 利用构造函数传参
RED (1), GREEN (3), YELLOW (2);
// 定义私有变量
private int nCode ;
// 构造函数,枚举类型只能为私有
private Light( int _nCode) {
this . nCode = _nCode;
}
@Override
public String toString() {
return String.valueOf ( this . nCode );
}
}
(注意:枚举类的构造方法一定要是private,这样可以保证不会在类外面定义类的实例)
枚举类定义默认都是public static final;
2、为什么选择枚举类而不是静态常量
1)静态常量的方法
在静态常量的方法中隐藏着一些问题,这些常量是Java中int类型的常量,这意味着该方法可以接受任何int 类型的值,即使它和WeekDay中定义的所有日期都对应不上。因此,您需要检测上界和下界,在出现无效值的时候,可能还要抛出一个IllegalArgumentException。
public class WeekDay {
public static final int MONDAY = 1;
public static final int TUESDAY = 2;
public static final int WENSDAY = 3;
public static final int THURSDAY = 4;
public static final int FRIDAY = 5;
}
2)枚举类的方法
public class WeekDay {
public static final WeekDay MONDAY = new WeekDay(1);
public static final WeekDay TUESDAY = new WeekDay(2);
public static final WeekDay WENSDAY = new WeekDay(3);
public static final WeekDay THURSDAY = new WeekDay(4);
public static final WeekDay FRIDAY = new WeekDay(5);
public int getValue(){
return value;
}
private int value;
private WeekDay(int i){
this.value = i;
}
}
使用枚举的好处就是程序现在接受的不是int类型的数据了,而是WeekDay的一个预定义好的static final的实例(WeekDay.TUESDAY等 )。由于他们都是单例的,因此可以选择使用equals或者==。
3、enum常用方法的使用
public static enum Light {
RED,YELLOW,BLUE
}
public static void main(String args[]) {
for(Light light:Light.values()) {
System.out.println(light.toString());
}
System.out.println(Light.valueOf("RED"));
}
在比较两个枚举类型的值时, 永远不需要调用 equals, 而直接使用“ = = ” 就可以。
扫描二维码关注公众号,回复:
4242281 查看本文章