JavaSE学习之枚举
Posted yfyyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaSE学习之枚举相关的知识,希望对你有一定的参考价值。
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学习之枚举的主要内容,如果未能解决你的问题,请参考以下文章