项目中为什么要用枚举——避免魔法值
1.什么情况下用枚举类型?
当一个属性只有几种可能值的时候。
如:季节只有春夏秋冬;代码水平只有大佬和菜鸡;学历有中专,本科,研究生
2.枚举类怎么写怎么用
1)含参枚举常量
以下示例描述了季节只有春夏秋冬
public enum SeasonEnum {
//含参的枚举常量:
SPRING("spring"), SUMMER("summer"), AUTTUMN("auttumn"), WINTER("winter");
String content;
//构造方法
private SeasonEnum(String content) {
this.content = content;
}
//get()方法
public String getContent() {
return content;
}
//在main方法里测试
public static void main(String[] args) {
//创建枚举对象,并输出
System.out.println(SeasonEnum.SPRING.getContent());
System.out.println(SeasonEnum.SUMMER.getContent());
System.out.println(SeasonEnum.AUTTUMN.getContent());
System.out.println(SeasonEnum.WINTER.getContent());
}
}
2)无参枚举常量
以下示例描述了代码水平,分大佬和菜鸡两种
public enum LeverEnum {
DALAO,CAIJI; //枚举常量:大佬和菜鸡
//这个无参构造器写不写都无所谓,因为jvm会默认帮我们创造一个无参构造器的
LeverEnum(){
}
public static void main(String[] args) {
//打印枚举常量:大佬和菜鸡
System.out.println("您的代码水平:");
System.out.println(LeverEnum.CAIJI);
System.out.println(LeverEnum.DALAO);
}
}
有参枚举变量和无参枚举变量的区别:
它们的区别在于构造方法不同,无参枚举变量的构造方法是无参的,返回的全是大写的常量值;
有参枚举变量是传了参数的,参数值可以自定义,因此返回的是比较容易看懂意思的值,比如中文
3.枚举类型与类的相似处
1)同样有构造方法,可以是有参或无参的
2)有get方法,可以通过智能补齐打出该方法
3)使用枚举变量,也是像类一样,要现有对象,然后再调用get方法获取它的对应值,请参考上面季节那个例子
4.写枚举代码的demo时,可能会一路报错,不用慌,写完构造方法就好了