Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 337|回复: 0

[枚举学习]Java 枚举七种常见用法

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-28 23:55:53 | 显示全部楼层 |阅读模式
    用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。
    public enum Color {
        RED, GREEN, BLANK, YELLOW
    }  用法二:switch 使用枚举,能让我们的代码可读性更强。

    1. enum  Signal {  
    2.         GREEN, YELLOW, RED  
    3.     }
    4.        
    5. public class  TrafficLight {  
    6.     Signal color = Signal.RED;  
    7.     public   void  change() {  
    8.         switch  (color) {  
    9.           case  RED:  
    10.              color = Signal.GREEN;  
    11.              break ;  
    12.           case  YELLOW:  
    13.              color = Signal.RED;  
    14.              break ;  
    15.            case  GREEN:  
    16.              color = Signal.YELLOW;  
    17.              break ;  
    18.           }  
    19.         }  
    20.     }  
    复制代码
    用法三:向枚举中添加新方法 如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 java 要求必须先定义 enum 实例。
    1.     public   enum  Color {  
    2.         RED("红色" ,  1 ), GREEN("绿色" ,  2 ), BLANK("白色" ,  3 ), YELLO("黄色" ,  4 );
    3.         // 成员变量   
    4.         private  String name;  
    5.         private  int index;
    6.         // 构造方法   
    7.         private  Color(String name, int index) {  
    8.             this.name = name;  
    9.             this.index = index;  
    10.         }  
    11.         // 普通方法   
    12.         public   static  String getName(int index) {  
    13.             for(Color c : Color.values()) {  
    14.                 if(c.getIndex() == index) {  
    15.                   return  c.name;  
    16.                 }  
    17.             }  
    18.             return   null ;  
    19.         }  
    20.         // get set 方法   
    21.         public  String getName() {  
    22.             return  name;  
    23.         }  
    24.         public void  setName(String name) {  
    25.             this.name = name;  
    26.         }  
    27.         public int  getIndex() {  
    28.             return  index;  
    29.         }  
    30.         public void  setIndex(int index) {  
    31.             this.index = index;  
    32.         }  
    33.     }  
    复制代码
    用法四:覆盖枚举的方法 下面给出一个toString()方法覆盖的例子。
    1.     public enum  Color {  
    2.         RED("红色" , 1), GREEN("绿色" , 2 , BLANK("白色" , 3), YELLO("黄色" ,4);  
    3.         // 成员变量   
    4.         private String name;  
    5.         private int  index;  
    6.         // 构造方法   
    7.         private Color(String name,int  index){  
    8.             this.name = name;  
    9.             this.index = index;  
    10.         }  
    11.         //覆盖方法   
    12.         @Override   
    13.         public String toString() {  
    14.             return this.index+ "_" + this.name;  
    15.         }  
    16.     }  
    复制代码
    用法五:实现接口 所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。
    1.     public  interface  Behaviour {  
    2.         void  print();  
    3.         String getInfo();  
    4.     }  
    5.     public enum  Color  implements  Behaviour{  
    6.         RED("红色" , 1), GREEN("绿色" ,2), BLANK("白色" , 3), YELLO("黄色" ,4);  
    7.         
    8.         // 成员变量   
    9.         private  String name;  
    10.         private   int  index;
    11.         // 构造方法   
    12.         private  Color(String name, int index) {  
    13.             this.name = name;  
    14.             this.index = index;  
    15.         }

    16.         //接口方法   
    17.         @Override   
    18.         public  String getInfo() {  
    19.             return this.name;  
    20.         }

    21.         //接口方法   
    22.         @Override   
    23.         public  void print() {  
    24.             System.out.println(this.index+ ":" + this.name);  
    25.         }  
    26.     }  
    复制代码
    用法六:使用接口组织枚举
    1. public interface Food{  
    2.         enum Coffee implements Food{  
    3.            BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO  
    4.         }  
    5.         enum Dessert implements Food{  
    6.             FRUIT, CAKE, GELATO  
    7.         }  
    8.     }  
    复制代码
    用法七:关于枚举集合的使用

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

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-26 04:05 , Processed in 0.306092 second(s), 36 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表