zoukankan      html  css  js  c++  java
  • 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);
       }
    }
    
    

  • 相关阅读:
    2015的最后一天
    网络类型IPv4和IPv6什么意思?区别?
    2:文档编辑生成目录相关方法说明
    TCP与UDP的区别
    vs 2012 InstallShield Limited Edition Project 打包windows服务解析
    百科编辑器ueditor应用笔记
    百度编辑器Ueditor 初始化加载内容失败解决办法
    矩阵-DirectX与OpenGL的不同
    ios系统中各种设置项的url链接
    简单的优化处理 By LINQ TO SQL
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6790194.html
Copyright © 2011-2022 走看看