zoukankan      html  css  js  c++  java
  • 枚举

    enum Color
    {
     RED,GREEN,BLUE;
    }
    public class EnumDemo {
     public static void main(String args[])
     {
      Color c=Color.RED;
      System.out.println(Color.RED+""+Color.BLUE);
     }
    }

    Enum类和enum关键字的区别

    使用enum关键字可以定义一个枚举类型,那么实际上就相当于定义了一个类,此类继承了Enum类而已。

    在Enum类的构造方法中是受保护的,实际上对于每一个枚举对象一旦声明之后,就表示自动调用此构造方法,所有的编号采用自动编号的方式进行。

    enum Color
    {
     RED,GREEN,BLUE;
    }
    public class EnumDemo {
     public static void main(String args[])
     {
      Color c=Color.RED;
      System.out.println(Color.RED+""+Color.BLUE);
         for(Color c1:Color.values())
         {
          System.out.println(c1);
          //输出枚举值和其中的自动编号
          System.out.println(c1.name()+"--->"+c1.ordinal());
         }
     }
    }

    类集对枚举的支持

    EnumMap

    EnumMap是Map的子类,与Map的操作是一致

    import java.awt.Color;
    import java.util.EnumMap;
    import java.util.Map;
    public class EnumMapDemo {
     public static void main(String args[])
     {
      EnumMap<Color,String> eMap=new EnumMap<Color,String>(Color.class);
         eMap.put(Color.RED, "红色"); 
         eMap.put(Color.GREEN, "绿色");
         eMap.put(Color.BLUE, "蓝色");
         for(Map.Entry<Color, String> me:eMap.entrySet())
         {
          System.out.println(me.getKey()+"-->"+me.getValue());
         }
     }
    }

    EnumSet

    EnumSet本身是Set接口的子类,但是在此类中并没有任何的构造方法定义,表示构造方法被私有化了。此类的方法都是静态的操作。

    import java.awt.Color;
    import java.util.EnumSet;
    import java.util.Iterator;
    public class EnumSetDemo {
     public static void main(String args[])
     {
      //表示将全部的内容保存到集合
      EnumSet<Color> eSet=EnumSet.allOf(Color.class);
         Iterator<Color> iter=eSet.iterator();
         while(iter.hasNext())
         {
          System.out.println(iter.next());
         }

      //表示此类型的空集合

      //EnumSet<Color> eSet=EnumSet.noneOf(Color.class);
     }
    }

     枚举的构造方法

    可以在枚举中直接定义构造方法,但是一旦构造方法定义之后,则所有枚举对象都必须明确的调用此构造方法。

    enum Color
    {
     RED("红色"),GREEN("绿色"),BLUE("蓝色");
     private String name;
        Color(String name)
        {
          this.name=name; 
        }
    }

    枚举中的构造方法为默认的private权限

    System.out.println(c1.name()+"--->"+c1.ordinal()+"---->"c1.getName());


    让枚举实现一个接口

    一个枚举实现一个接口之后,各个枚举对象都必须实现接口中的抽象方法


    interface Info
    {
     public String getColor();
    }
    enum Color implements Info
    {
     RED
     {
      public String getColor()
      {
       return "红色";
      }
     },
     GREEN
     {
         public String getColor()
         {
          return "绿色";
         }
     },
     BLUE
     {
         public String getColor()
         {
          return "蓝色";
         }
     };
    }
    public class EnumDemo5 {
     public static void main(String args[])
     {
      for(Color c:Color.values())
      {
       System.out.println(c.ordinal()+"---->"+c.getColor()+"---->"+c.getName());
      }
     }
    }

     在枚举中定义抽象方法

    在一个枚举中也可以定义多个抽象方法,枚举中的每个对象都必须单独实现。

  • 相关阅读:
    滑雪,不亦乐乎
    quant
    分享:Comment Remover 0003 发布
    shit 牛人要么出国了,要么在出国的路上
    linux目录跳转快捷方式——z武器
    迷你双核RK3066 安卓4.1智能网络高清TV 安卓播放器MK802III淘宝网
    分享:每天40分钟家务
    Marios Hadjieleftheriou/Frequent Items: Evaluation Source Code
    urllib2源码解读四(用opener打开你的url)
    分享:Editra 0.7.20 发布,跨平台文本编辑器
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1948794.html
Copyright © 2011-2022 走看看