基于java枚举类综合应用的说明

时间:2023-02-16 09:39:25 

如下面代码以交灯为示例:


public class Test {

     public static void main(String[] args) {
         Trafficlight light = Trafficlight.RED;

         System.out.println(light.time);
         System.out.println(light.nextLigth());
         // ordinal()方法返回枚举声明的顺序
         System.out.println(light.ordinal());
         // values()方法得到所有枚举类型的一个数组
         for(Trafficlight light1:light.values()){
             System.out.println(light1.name());
         }

         // valueOf()方法可以把字符串转换成相应的枚举对象
         System.out.println(light.RED ==light.valueOf("RED"));
     }

     public enum Trafficlight {
         GREEN(30) {

             @Override
             public Trafficlight nextLigth() {
                 return RED;
             }
         },
         RED(30) {

             @Override
             public Trafficlight nextLigth() {
                 return YELLOW;
             }
         },
         YELLOW(10) {

             @Override
             public Trafficlight nextLigth() {
                 return GREEN;
             }
         };
         public abstract Trafficlight nextLigth();

         private int time;

         // 构造方法
         private Trafficlight(int time) {
             this.time = time;
         }

         public int getTime(){
             return time;
         }

     }

 }


代码中,可以看到GREEN,RED,YELLOW,分别是Trafficlight的一个子类,并作为它的成员变量。在Trafficlight有一个抽象方法nextLight(),在子类中是必须要实现的,所以@Override,另外它们也继承了父类的方法,所以可以调用父类的方法 getTiime(),由于父类Trafficlight中声明一个有参数的构造方法覆盖了无参的构造方法,所以构建子类时也必须要加上参数。

代码中light只是相当于一个父类的实例,用它可以得到各个成员变量的子类,调用各种方法,valueOf(String)方法可以将字符串转换成一个枚举。

标签:java,枚举类
0
投稿

猜你喜欢

  • C#常见算法面试题小结

    2023-05-18 02:56:07
  • Spring Security添加验证码的两种方式小结

    2021-08-05 17:24:25
  • Android实现缓存大图到SD卡

    2022-07-13 07:13:50
  • Android getevent用法实例详解

    2021-06-27 10:03:35
  • SpringBoot Web依赖教程

    2023-01-06 21:51:50
  • 基于Java语言实现Socket通信的实例

    2021-08-06 17:17:50
  • Java中过滤器 (Filter) 和 拦截器 (Interceptor)的使用

    2023-07-07 00:20:28
  • 浅谈Java中replace与replaceAll区别

    2021-07-05 12:56:56
  • Java Object定义三个点实现代码

    2023-11-21 06:05:07
  • 基于Java设计一个短链接生成系统

    2023-08-15 09:23:37
  • File.createTempFile创建临时文件的示例详解

    2022-05-03 08:52:41
  • C#应用BindingSource实现数据同步的方法

    2021-07-09 16:15:48
  • Jenkins初级应用之Invoke Phing targets插件配置

    2023-10-14 03:55:56
  • Android通过Handler与AsyncTask两种方式动态更新ListView(附源码)

    2022-04-14 03:32:22
  • Java实现单向链表反转

    2023-11-18 01:03:11
  • c#接口使用示例分享

    2022-02-22 17:38:46
  • Java实现中英文词典功能

    2021-06-20 18:25:56
  • Java常见面试题之多线程和高并发详解

    2023-07-24 09:33:51
  • Android帧动画、补间动画、属性动画用法详解

    2023-02-06 15:02:47
  • 使用spring通过aop获取方法参数和参数值

    2022-06-04 16:28:33
  • asp之家 软件编程 m.aspxhome.com