枚举可以干什么。谁能解释下下面的是干什么的
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.   


    +1在 JDK1.5 之前是没有枚举类型的,那时全部是用整数进行枚举
    比如创建字体,构造方法里通过整数来确定粗体、斜体等样式,但是整数有2^32种可能,而可传入的参数只有那么几个,如果写程序时随意传了个整数给构造器,偏偏测试时没有测到,这就留下了隐患。
    而如果改为枚举,限制了你只能传入那么几个数值,编译时就避免了这类错误的发生。