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));
}
}