• Java中的枚举类为何不能有public构造器


           声明:本博客为原创博客。未经同意。不得转载!原文链接为http://blog.csdn.net/bettarwang/article/details/27262809.

         从Java 5開始有了枚举类,须要注意的是enum定义的类默认继承的是java.lang.Enum类而不是Object类。

    同一时候注意枚举类不能派生子类(类的默认修饰符为final)。其原因基于它仅仅有private构造器。那为什么要设计成这样呢?

          事实上非常easy想明确,所谓枚举类就是有包括有固定数量实例(而且实例的值也固定)的特殊类,假设其含有public构造器,那么在类的外部就能够通过这个构造器来新建实例,显然这时实例的数量和值就不固定了,这与定义枚举类的初衷相矛盾,为了避免这样的形象。就对枚举类的构造器默认使用private修饰。假设为枚举类的构造器显式指定其他訪问控制符,则会编译出错。

          另外。注意枚举类的全部实例必须在其首行显式列出,否则它不能产生实例。

    例如以下是一个使用枚举类的经典演示样例:  

    import java.util.*;
    
    enum Planet
    {
      MERCURY,VENUS,EARTH,MARS,JUPITER,SATURN,URANUS,NEPTUNE
    }
    
    public class EnumSample
    {
       public void flyTo(Planet planet)
       {
         String destination="";
         switch(planet)
         {
           case MERCURY:
              destination="水星";
              break;
           case VENUS:
              destination="金星";
              break;
           case EARTH:
              destination="地球";
              break;
           case MARS:
              destination="火星";
              break;
           case JUPITER:
              destination="木星";
              break;
           case SATURN:
               destination="土星";
               break;
           case URANUS:
               destination="天王星";
               break;
           case NEPTUNE:
               destination="海王星";
               break;
          }
          System.out.println("The destination is "+destination);
        }
      public static void main(String[]args)
      {
         EnumSample sample=new EnumSample();
         sample.flyTo(Planet.NEPTUNE);
       }
    }
    
    

  • 相关阅读:
    客户端不能连接MySQL
    Linux 7.x 防火墙&端口
    MYSQL.版本查看-LINUX
    Java之.jdk卸载-Linux
    Redis.之.环境搭建(集群)
    Elasticsearch.安装插件(head)
    Linux安装Nodejs
    Linux.ls 查看常用参数
    Elasticsearch.安装(单节点)
    Andrew NG 机器学习编程作业3 Octave
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6790194.html
Copyright © 2020-2023  润新知