枚举是JDK1.5以后推出的一种新的类型(特殊的类),主要用于更加严格的约束变量类型,例如现有一个产品对象,此对象有一个性别属性,请问此属性的类型如何定义?
基于枚举更好限定变量的取值,例如一个变量要求有A,B,C三个值,该如何定义?此时就可以使用枚举,枚举类中一般定义的是几个固定的常量值.
案例分析:
1)JDK
public enum RetentionPolicy {
SOURCE,
CLASS,
RUNTIME
}
2)mybatis 中Executor对象的类型
public enum ExecutorType {
SIMPLE, REUSE, BATCH
}
枚举定义时需要借助enum关键字进行定义,例如:
enum Week {
MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
说明:
1)每个枚举类中都默认有一个无参构造函数,默认使用private修饰.
2)枚举每个实例的创建都会初始化类中属性(可以添加),调用类中构造方法(默认无参,当然也可以添加带参数的构造函数)
案例1:定义一枚举类型,基于此类型约束产品Product类中的变量.
枚举类定义(性别类)
enum Gender{//Gender.class
MALE,FEMALE,NONE;
}
产品类定义
class Product{
/**性别要求*/
private Gender gender=Gender.NONE;
public void setGender(Gender gender) {
this.gender = gender;
}
}
测试类定义
public class TestEnum01 {
public static void main(String[] args) {
Product pro=new Product();
pro.setGender(Gender.MALE);
}
}
案例2:定义性别枚举,用于约束用户类中的性别属性
枚举类定义:类中可以定义带参数的构造方法,构建实例时为属性赋值.
enum Sex{
//枚举类型的对象是在类加载时创建
MALE("男"),FEMALE("女");//执行带参构造函数
private String name;
private Sex(String name){
this.name=name;
}
public String getName() {
return name;
}
}
会员类中枚举类应用
class Member{
private Sex sex=Sex.MALE;
public void setSex(Sex sex) {
this.sex = sex;
}
}
测试类定义
public class TestEnum02 {
public static void main(String[] args) {
Member m=new Member();
String sexStr="MALE";
//将字符串转换为枚举类型时,字符串的值需要
//与枚举类中的实例名相同(区分大小写)
//Sex sex=Sex.valueOf(sexStr);
Sex sex=Enum.valueOf(Sex.class, sexStr);
System.out.println(sex.getName());
m.setSex(sex);
}
}
enum问题不再详细赘述,想要了解更详细的,可面向百度。本人部分内容摘自齐*的文档,在此向老师表达敬意。看过的小伙伴可以评论和支持哦!