Enum枚举类的学习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/y41992910/article/details/89527538
//构造器是不允许其他类型的修饰,只能private,所以枚举类无法在类外进行初始化,保证了它不会多出几个另外的实例
//所以枚举的实例本身也就是一个初始化好的类的示例(调用了构造函数初始化)
//DAY调用了EnumTest2(),SECOND(100,"秒")调用了EnumTest2(Integer code,String message)
import java.util.HashMap;
import java.util.Map;

public enum EnumTest2 {

	DAY,MOUTH,YEAR,SECOND(100,"秒");
	
	private Integer code;
	private String message;
	//构造器是不允许其他类型的修饰,只能private
	//所以枚举的实例本身也就是一个初始化好的类的示例(调用了构造函数初始化)
	//DAY调用了EnumTest2(),SECOND(100,"秒")调用了EnumTest2(Integer code,String message)
	private EnumTest2(Integer code,String message) {
		
	}
	
	private EnumTest2() {
	}
	private static final Map<String, EnumTest2> map = new HashMap<String, EnumTest2>();
	static {
	//学习遍历枚举类的方法:values()是枚举类自带的数组,包含它所有的实例
		for (EnumTest2 enumTest : values()) {
				//name是默认属性?是的,代表实例定义的命名
			map.put(enumTest.name(), enumTest);
		}
	}
	
	public static void main(String[] args) {
		//{YEAR=YEAR, MOUTH=MOUTH, DAY=DAY}
		System.out.println(map.toString());
	}
}
import java.util.HashMap;
import java.util.Map;

public enum EnumTest {
	//能这么写,本质上是因为采用了默认的构造函数的原因,每一个枚举类的定义相当于调用了对应的构造函数,构造了自己
	//也就是已经初始化好的类的一个实例
	DAY,MOUTH,YEAR;
	
	private static final Map<String, EnumTest> map = new HashMap<String, EnumTest>();
	static {
		for (EnumTest enumTest : values()) {
			map.put(enumTest.name(), enumTest);
		}
	}
	
	public static void main(String[] args) {
		//{YEAR=YEAR, MOUTH=MOUTH, DAY=DAY}
		System.out.println(map.toString());
	}
}

HttpMethod

public enum HttpMethod {

	GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE;

	//定义给一个Map,根据string的值来获取对应的枚举类型.
	
	private static final Map<String, HttpMethod> mappings = new HashMap<String, HttpMethod>(8);
	//初始化的时候,将自己所有的枚举类加入map中.
	static {
	//学习遍历枚举类的方法:values()是枚举类自带的数组,包含它所有的实例
		for (HttpMethod httpMethod : values()) {
		//name是默认属性?是的,代表实例定义的命名
			mappings.put(httpMethod.name(), httpMethod);
		}
	}


	/**
	 * Resolve the given method value to an {@code HttpMethod}.
	 * @param method the method value as a String
	 * @return the corresponding {@code HttpMethod}, or {@code null} if not found
	 * @since 4.2.4
	 */
	public static HttpMethod resolve(String method) {
		return (method != null ? mappings.get(method) : null);
	}


	/**
	 * Determine whether this {@code HttpMethod} matches the given
	 * method value.
	 * @param method the method value as a String
	 * @return {@code true} if it matches, {@code false} otherwise
	 * @since 4.2.4
	 */
	public boolean matches(String method) {
		return (this == resolve(method));
	}

}



猜你喜欢

转载自blog.csdn.net/y41992910/article/details/89527538
今日推荐