zoukankan      html  css  js  c++  java
  • Java

    Java中,枚举的其中用法:

    1、定义常量:

     1 /**
     2  * 枚举第一种用法:常量;替代之前的定义在类中的常量
     3  */
     4 package enum_;
     5 
     6 public enum Color1
     7 {
     8     RED,
     9     YELLOW,
    10     BLUE,
    11     GREEN  // 最后一个加逗号,加分号,不加,都没报错
    12 }
    13 
    14 class EnumDemo01
    15 {
    16     public static void main(String[] args)
    17     {
    18         Color1 color = Color1.RED;
    19         Color1 color2 = Color1.RED;
    20         Color1 color3 = Color1.YELLOW;
    21         
    22         // 结果返回false
    23         System.out.println("RED".equals(color));
    24         // 结果返回true
    25         System.out.println("RED".equals(color.toString()));
    26         
    27         // 结果返回false
    28         System.out.println("RED".equals(Color1.RED));
    29         // 结果返回true
    30         System.out.println("RED".equals(Color1.RED.toString()));
    31         
    32         // enum类型转为String类型的两种方式
    33         // 1.调用toString()方法,返回此枚举常量的名称;
    34         String red = color.toString();
    35         System.out.println("RED".equals(red));  // 结果返回true
    36         // 2.调用name()方法,返回此枚举常量的名称;
    37         String name = color.name();
    38         System.out.println("RED".equals(name));  // 结果返回true
    39         
    40         // 使用 == 或 equals() 比较两个枚举类是否相等,效果是一样的
    41         // 1.使用 == 进行比较
    42         System.out.println(color.equals(color2));
    43         System.out.println(color == color2);
    44         // 2.使用 equals() 进行比较
    45         System.out.println(color.equals(color3));
    46         System.out.println(color == color3);
    47     }
    48 }
    枚举第一种用法:常量;替代之前的定义在类中的常量

    2、在 switch 中使用:

     1 /**
     2  * 枚举的第二种用法:放在switch中
     3  */
     4 package enum_;
     5 
     6 public enum Color2
     7 {
     8     RED, GREEN, YELLOW, BLUE
     9 }
    10 
    11 class EnumDemo02
    12 {
    13     public static void main(String[] args)
    14     {
    15         Color2 signal = Color2.BLUE;
    16         
    17         switch(signal)
    18         {
    19             case RED:
    20                 System.out.println("红灯亮...");
    21                 break;
    22             case GREEN:
    23                 System.out.println("绿灯亮...");
    24                 break;
    25             case YELLOW:
    26                 System.out.println("黄灯亮...");
    27                 break;
    28             default:
    29                 System.out.println("灯坏了,不亮了...");
    30         }
    31     }
    32 }
    枚举的第二种用法:放在switch中

    3、添加属性和方法:

     1 /**
     2  * 枚举的第三种用法:向枚举中添加属性和方法
     3  */
     4 package enum_;
     5 
     6 public enum Color3
     7 {
     8     // 如果自定义自己的方法,那么必须在enum实例序列的最后添加一个分号;而且 Java 要求必须先定义 enum 实例;
     9     // 下面实例是依据构造方法来实现这个写法
    10     RED("红色",1), YELLOW("黄色",2), BLUE("蓝色",3), GREEN("绿色",4);
    11     
    12     // 成员变量  
    13     private String name;
    14     private Integer index;
    15     
    16     // 构造方法
    17     // 构造方法的访问限定符只能是private或默认不写
    18     private Color3(String name, Integer index)
    19     {
    20         this.name = name;
    21         this.index = index;
    22     }
    23     
    24     // 普通方法  
    25     public String getColorName(Integer index)
    26     {
    27         for(Color3 c : Color3.values())
    28         {
    29             if(c.getIndex() == index)
    30                 return c.getName();
    31         }
    32         
    33         return null;
    34     }
    35 
    36     // get、set 方法 
    37     public String getName()
    38     {
    39         return name;
    40     }
    41     public void setName(String name)
    42     {
    43         this.name = name;
    44     }
    45     public Integer getIndex()
    46     {
    47         return index;
    48     }
    49     public void setIndex(Integer index)
    50     {
    51         this.index = index;
    52     }
    53     
    54 }
    55 
    56 class EnumDemo03
    57 {
    58     public static void main(String[] args)
    59     {
    60         Color3 c = Color3.RED;
    61         System.out.println(c.getName());
    62         System.out.println(c.getIndex());
    63         System.out.println(c.getColorName(2));
    64     }
    65 }
    枚举的第三种用法:向枚举中添加属性和方法

    4、覆盖枚举的方法:

     1 /**
     2  * 枚举第四种用法:覆盖枚举的方法
     3  */
     4 package enum_;
     5 
     6 public enum Color4
     7 {
     8     RED("红色",1), YELLOW("黄色",2), BLUE("蓝色",3), GREEN("绿色",4);
     9     
    10     private String name;
    11     private Integer index;
    12     
    13     private Color4(String name, Integer index)
    14     {
    15         this.name = name;
    16         this.index = index;
    17     }
    18 
    19     public String getName()
    20     {
    21         return name;
    22     }
    23     public void setName(String name)
    24     {
    25         this.name = name;
    26     }
    27     public Integer getIndex()
    28     {
    29         return index;
    30     }
    31     public void setIndex(Integer index)
    32     {
    33         this.index = index;
    34     }
    35     
    36     // 重写toString()方法
    37     @Override
    38     public String toString()
    39     {
    40         return "name:" + name + ",index:" + index;
    41     }
    42     
    43 }
    44 
    45 class EnumDemo04
    46 {
    47     public static void main(String[] args)
    48     {
    49         Color4 c = Color4.RED;
    50         System.out.println(c.getName());
    51         System.out.println(c.getIndex());
    52         System.out.println(c.toString());
    53     }
    54 }
    枚举第四种用法:覆盖枚举的方法

    5、实现接口:

     1 /**
     2  * 枚举第五种用法:实现接口
     3  */
     4 package enum_;
     5 
     6 public enum Color5 implements Behaviour
     7 {
     8     RED("红色",1), YELLOW("黄色",2), BLUE("蓝色",3), GREEN("绿色",4);
     9     
    10     private String name;
    11     private Integer index;
    12     
    13     private Color5(String name, Integer index)
    14     {
    15         this.name = name;
    16         this.index = index;
    17     }
    18 
    19     @Override
    20     public void printColorInfo()
    21     {
    22         System.out.println("name:" + name + ",index:" + index);
    23     }
    24 
    25     public String getName()
    26     {
    27         return name;
    28     }
    29     public void setName(String name)
    30     {
    31         this.name = name;
    32     }
    33     public Integer getIndex()
    34     {
    35         return index;
    36     }
    37     public void setIndex(Integer index)
    38     {
    39         this.index = index;
    40     }
    41     
    42     @Override
    43     public String toString()
    44     {
    45         return "name:" + name + ",index:" + index;
    46     }
    47 
    48 }
    49 
    50 interface Behaviour
    51 {
    52     void printColorInfo();
    53 }
    54 
    55 class EnumDemo05
    56 {
    57     public static void main(String[] args)
    58     {
    59         Color5 c = Color5.RED;
    60         System.out.println(c.toString());
    61         c.printColorInfo();
    62     }
    63 }
    枚举第五种用法:实现接口

    6、使用接口组织枚举:

     1 /**
     2  * 枚举第六种用法:使用接口组织枚举
     3  */
     4 package enum_;
     5 
     6 // 还必须导包
     7 import enum_.Color6.Color6_1;
     8 import enum_.Color6.Color6_2;
     9 
    10 public interface Color6
    11 {
    12     enum Color6_1
    13     {
    14         RED, YELLOW
    15     }
    16     
    17     enum Color6_2
    18     {
    19         BLUE, GREEN
    20     }
    21 }
    22 
    23 class EnumDeno06
    24 {
    25     public static void main(String[] args)
    26     {
    27         Color6_1 c1 = Color6.Color6_1.RED;
    28         Color6_2 c2 = Color6.Color6_2.BLUE;
    29         
    30         System.out.println(c1.name());
    31         System.out.println(c2.name());
    32     }
    33 }
    枚举第六种用法:使用接口组织枚举

    7、枚举集合的使用:
     java.util.EnumSet和java.util.EnumMap是两个枚举集合;EnumSet保证集合中的元素不重复;
    EnumMap中的key是enum类型,而value则可以是任意类型;关于这个两个集合的使用就不在这里赘述,可以参考JDK文档;

  • 相关阅读:
    现代操作系统读书笔记 2
    java8 中 ImageIO 读取 tiff 格式的图片失败
    word 转 pdf,c#代码
    spring 技术内幕读书笔记1
    操作系统精髓与设计读书笔记1
    手把手教你WEB套打程序开发
    WEB打印控件Lodop使用体会
    listview下拉刷新 上拉(滑动分页)加载更多
    如何解析android访问webservice返回的SoapObject数据(可用)
    统计子串在另一个字符中出现的次数
  • 原文地址:https://www.cnblogs.com/kehuaihan/p/8455859.html
Copyright © 2011-2022 走看看