java 枚举类
1.枚举类的说明:
①、枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类
②、当需要定义一组常量时,强烈建议使用枚举类
③、如果枚举类中只有一个对象,则可以作为单例模式的实现方式。
2.定义枚举类的步骤(5.0以前的):
//自定义枚举类 class Season{ //1.声明season对象的属性:private final修饰 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的 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.其他诉求:获取枚举类对象的属性 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } //4.其他诉求:提供toString() @Override public String toString() { return "Season{" + "seasonName='" + seasonName + '\'' + ", seasonDesc='" + seasonDesc + '\'' + '}'; } }
3.jdk 5.0新增使用enum定义枚举类。步骤:
//使用enum关键字枚举类 enum Season1{ //1.提供当前枚举类的对象,多个对象之间“,”隔开,末尾对象“;”结束 SPRING ("春天","春暖花开 "), SUMMER ("夏天","夏日炎炎 "), AUTUMN ("秋天","秋高气爽 "), WINTER ("冬天","冰天雪地 "); //2.声明season对象的属性:private final修饰 private final String seasonName; private final String seasonDesc; //2.私有化类的构造器 private Season1(String seasonName,String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = seasonDesc; } //4.其他诉求:获取枚举类对象的属性 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } // @Override // public void show() { // System.out.println("这是一个季节"); // } //4.其他诉求:提供toString() // @Override // public String toString() { // return "Season1{" + // "seasonName='" + seasonName + '\'' + // ", seasonDesc='" + seasonDesc + '\'' + // '}'; // } }
4.使用enum定义枚举类以后,枚举类常用的方法:(继承于java.lang.Enum类)
public static void main(String[] args) { Season1 summer = Season1.SUMMER; System.out.println(summer); //toString():返回枚举类对象的名称 System.out.println(summer.toString()); System.out.println("***********************"); //values():返回所有的枚举类对象构成的数组 Season1[] values = Season1.values(); for (int i = 0; i < values.length; i++) { System.out.println(values[i]); } //valueOf(String objName);返回枚举类中对象名时objName的对象 //如果没有objName的枚举类对象,则抛异常:IllegalArgumentException Season1 winter = Season1.valueOf("WINTER"); System.out.println(winter); }
5.使用enum定义枚举类之后,如何让枚举类对象分别实现接口:
interface Info{ void show(); } //使用enum关键字枚举类 enum Season1 implements Info{ //1.提供当前枚举类的对象,多个对象之间“,”隔开,末尾对象“;”结束 SPRING ("春天","春暖花开 "){ @Override public void show() { System.out.println("春天在哪里?"); } }, SUMMER ("夏天","夏日炎炎 "){ @Override public void show() { System.out.println("宁夏"); } }, AUTUMN ("秋天","秋高气爽 "){ @Override public void show() { System.out.println("秋天不回来"); } }, WINTER ("冬天","冰天雪地 "){ @Override public void show() { System.out.println("大约在冬季"); } };
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)