zoukankan      html  css  js  c++  java
  • Java 枚举类

    参考博客:  http://www.cnblogs.com/zhaoyanjun/p/5659811.html

    直接上代码:

     1 import java.util.HashMap;
     2 import java.util.Map;
     3 //import java.lang.Enum;  //这TM是默认导入的包
     4 
     5 public enum Color {
     6     WHITE(1,"WHITE"),
     7     RED(2,"RED"),
     8     ORANGE(3,"ORANGE"),
     9     YELLOW(4,"YELLOW"),
    10     GREEN(5,"GREEN"),
    11     BLUE(6,"BLUE"),
    12     PURPLE(7,"PURPLE"),
    13     BLACK(8,"BLACK")
    14     ;
    15     
    16     private Integer id;
    17     private String name;
    18     
    19     private Color(Integer id, String name) {
    20         this.id = id;
    21         this.name = name;
    22     }
    23     
    24     public Integer getId() {
    25         return id;
    26     }
    27     
    28     public String getName() {
    29         return name;
    30     }
    31     //到上面截至是一般枚举类的基本写法
    32     
    33     private static Map<Integer, Color> map = new HashMap<Integer, Color>();
    34     
    35     static {
    36         for(Color enums : Color.values()) {//后面会讲到这个方法输出的是什么
    37             map.put(enums.getId(), enums);
    38         }
    39     }
    40     
    41     public static Color valueOf(int id) {//看清楚返回值
    42         return valueOf(id, null);
    43     }
    44     
    45     public static Color valueOf(int id, Color color) {
    46         Color result = map.get(id);
    47         return result == null ? color : result;
    48     }
    49     
    50     //比如实际应用中可能有一些特殊的癖好列出所有颜色的名字  
    51     public static String[] listAllColor() {
    52         Color[] colors = Color.values();
    53         String[] result = new String[colors.length];
    54         for(int i = 0; i < colors.length; i++) {
    55             result[i] = colors[i].getName();
    56         }
    57         return result;
    58     }
    59     
    60     //再比如我想写一个nameOf
    61     public static String nameOf(int id) {
    62         Color temp = map.get(id);
    63         return temp == null ? null : temp.getName();
    64     }
    65 }

    测试一下:

    1     public static void main(String[] args) {
    2         //Hello World
    3         System.out.println(
    4                 Arrays.toString(Color.values()));
    5         System.out.println(Color.valueOf(3).getName());
    6         System.out.println(Color.nameOf(3));
    7         System.out.println(
    8                 Arrays.toString(Color.listAllColor()));
    9     }

    结果如下:


    好了讲一下values这个方法返回的是什么,返回的是那些枚举对象的名字不是name。

    或者说返回的是枚举类下的所有枚举。

    改成这个样子,运行结果如下:

    这下明白返回的是啥了吧。

  • 相关阅读:
    2012年浙大:Hello World for U
    noip2011普及组:统计单词
    noip2013提高组:积木大赛
    蓝桥杯:错误票据
    C#知识点
    疑问
    C#多态
    SQLServer导入Excel,复杂操作
    SQLServer数据库基本操作,导入Excel数据
    C#基础学习
  • 原文地址:https://www.cnblogs.com/zuosy/p/7609383.html
Copyright © 2011-2022 走看看