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

  • 相关阅读:
    C#调用Delphi的dll 详解
    C# 用API截取桌面屏幕
    C# 控件代码设置置顶和置底属性
    C#用API 获取电脑桌面背景图地址
    利用JS使IE浏览器默认打开是全屏显示
    aspx页面生成xml数据
    MacOS下安装Anaconda+Pycharm+TensorFlow+Keras
    GitHub编辑README
    Win10(64位)下安装Anaconda+Tensorflow(GPU)
    Win7(64位)下安装Anaconda+Tensorflow(CPU)
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6790194.html
Copyright © 2011-2022 走看看