Java基础加强——枚举

枚举

1.如何理解枚举

枚举是JDK1.5以后推出的一种新的类型(特殊的类),主要用于更加严格的约束变量类型,例如现有一个产品对象,此对象有一个性别属性,请问此属性的类型如何定义?

2.应用场景

基于枚举更好限定变量的取值,例如一个变量要求有A,B,C三个值,该如何定义?此时就可以使用枚举,枚举类中一般定义的是几个固定的常量值.

案例分析:
1)JDK

public enum RetentionPolicy {
    SOURCE,
    CLASS,
    RUNTIME
}

2)mybatis 中Executor对象的类型

public enum ExecutorType {
  SIMPLE, REUSE, BATCH
}

3.枚举的定义

枚举定义时需要借助enum关键字进行定义,例如:

enum Week {
    MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

说明:
1)每个枚举类中都默认有一个无参构造函数,默认使用private修饰.
2)枚举每个实例的创建都会初始化类中属性(可以添加),调用类中构造方法(默认无参,当然也可以添加带参数的构造函数)

4.应用

案例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问题不再详细赘述,想要了解更详细的,可面向百度。本人部分内容摘自齐*的文档,在此向老师表达敬意。看过的小伙伴可以评论和支持哦!

你可能感兴趣的:(Java基础加强,enum,java)