ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaSE枚举

2020-04-20 09:51:15  阅读:263  来源: 互联网

标签:String Season 枚举 seasonName seasonDesc JavaSE public


枚举类介绍

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

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

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

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

枚举类的实现

  • 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("冬天在哪里");
            }
        };
    

标签:String,Season,枚举,seasonName,seasonDesc,JavaSE,public
来源: https://www.cnblogs.com/yfyyy/p/12736029.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有