码迷,mamicode.com
首页 > 编程语言 > 详细

JavaSE学习之枚举

时间:2020-03-15 00:17:58      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:int   system   gets   使用   单例模式   情况   自定义   构造器   常量   

Java SE 枚举类

枚举类介绍

类的对象只有有限个、确定的。我们称此类为枚举类

  • 线程状态:创建、就绪、运行、堵塞、死亡

当需要定义一组常量时,强烈建议使用枚举类

如果枚举类中只有一个对象,则可以作为单例模式的实现方式

枚举类的实现

  • JDK1.5 之前需要自定义枚举类

    package cn.imut.test;
    
    //自定义枚举类
    public class Season {
        //1.声明Season的属性
        private final String seasonName;      //名称
        private final String seasonDesc;      //描述
    
        //2.私有化类的构造器,并给对象属性赋值
        private Season(String seasonName, String seasonDesc) {
            this.seasonName = seasonName;
            this.seasonDesc = seasonDesc;
        }
    
        //3.提供当前枚举类的多个对象
        public static final Season SPRING = new Season("春天","春暖花开");
        public static final Season SUMMER = new Season("夏天","夏日炎炎");
        public static final Season AUTUMN = new Season("秋天","秋高气爽");
        public static final Season WINTER = new Season("冬天","冰天雪地");
    
        //4.其他述求1:获取枚举类对象的属性
        public String getSeasonName() {
            return seasonName;
        }
    
        public String getSeasonDesc() {
            return seasonDesc;
        }
    
        //4.其他述求2:提供toString()
        @Override
        public String toString() {
            return "Season{" +
                    "seasonName='" + seasonName + '\'' +
                    ", seasonDesc='" + seasonDesc + '\'' +
                    '}';
        }
    }

    测试

    package cn.imut.test;
    
    public class SeasonTest {
        public static void main(String[] args) {
            Season summer = Season.SUMMER;
            System.out.println(summer);
        }
    }
  • JDK1.5 新增的 enum关键字用于定义枚举类

    package cn.imut.test;
    
    //使用enum关键字定义枚举类
    //说明:定义的枚举类默认继承于java.lang.Enum类
    public enum Season1 {
    
        //1.提供当前枚举类的对象,多个对象之间用逗号隔开,末尾对象分号结束
        SPRING("春天","春暖花开"),
        SUMMER("夏天","夏日炎炎"),
        AUTUMN("秋天","秋高气爽"),
        WINTER("冬天","冰天雪地");
    
        //2.声明Season的属性
        private final String seasonName;      //名称
        private final String seasonDesc;      //描述
    
        //3.私有化类的构造器,并给对象属性赋值
        private Season1(String seasonName, String seasonDesc) {
            this.seasonName = seasonName;
            this.seasonDesc = seasonDesc;
        }
    
        //4.其他述求1:获取枚举类对象的属性
        public String getSeasonName() {
            return seasonName;
        }
    
        public String getSeasonDesc() {
            return seasonDesc;
        }
    }
    

若枚举类只有一个对象,则可以作为一种单例模式的实现方式

Enum类的主要方法

技术图片

常用

  • values()
  • valueOf(String str)
  • toString()

枚举类的属性

  • 枚举类对象的属性不应允许被改动,所以应该使用 private final 修饰
  • 枚举类使用 private final 修饰的属性应该在构造器中为其赋值
  • 若枚举类显式的定义了带参数的构造器,则在列出枚举值时也必须对应的传入参数

使用enum关键字定义的枚举类实现接口的情况

  • 情况一、实现接口,在enum类中实现抽象方法

  • 情况二

    public enum Season1 implements Info{
    
        //1.提供当前枚举类的对象,多个对象之间用逗号隔开,末尾对象分号结束
        SPRING("春天","春暖花开") {
            public void show() {
                System.out.println("春天在哪里");
            }
        },
        SUMMER("夏天","夏日炎炎") {
            public void show() {
                System.out.println("夏天在哪里");
            }
        },
        AUTUMN("秋天","秋高气爽") {
            public void show() {
                System.out.println("秋天在哪里");
            }
        },
        WINTER("冬天","冰天雪地") {
            public void show() {
                System.out.println("冬天在哪里");
            }
        };

JavaSE学习之枚举

标签:int   system   gets   使用   单例模式   情况   自定义   构造器   常量   

原文地址:https://www.cnblogs.com/yfyyy/p/12495038.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!