枚举可以干什么。谁能解释下下面的是干什么的
package okhttp3;import java.io.IOException;public enum Protocol
{
HTTP_1_0, HTTP_1_1, SPDY_3, HTTP_2; private final String protocol; public static Protocol get(String protocol)
throws IOException
{
if (protocol.equals(HTTP_1_0.protocol)) return HTTP_1_0;
if (protocol.equals(HTTP_1_1.protocol)) return HTTP_1_1;
if (protocol.equals(HTTP_2.protocol)) return HTTP_2;
if (protocol.equals(SPDY_3.protocol)) return SPDY_3;
throw new IOException("Unexpected protocol: " + protocol);
} public String toString()
{
return this.protocol;
}
}
package okhttp3;import java.io.IOException;public enum Protocol
{
HTTP_1_0, HTTP_1_1, SPDY_3, HTTP_2; private final String protocol; public static Protocol get(String protocol)
throws IOException
{
if (protocol.equals(HTTP_1_0.protocol)) return HTTP_1_0;
if (protocol.equals(HTTP_1_1.protocol)) return HTTP_1_1;
if (protocol.equals(HTTP_2.protocol)) return HTTP_2;
if (protocol.equals(SPDY_3.protocol)) return SPDY_3;
throw new IOException("Unexpected protocol: " + protocol);
} public String toString()
{
return this.protocol;
}
}
+1在 JDK1.5 之前是没有枚举类型的,那时全部是用整数进行枚举
比如创建字体,构造方法里通过整数来确定粗体、斜体等样式,但是整数有2^32种可能,而可传入的参数只有那么几个,如果写程序时随意传了个整数给构造器,偏偏测试时没有测到,这就留下了隐患。
而如果改为枚举,限制了你只能传入那么几个数值,编译时就避免了这类错误的发生。