Enum和enum关键字
package com.changyonglei.meijulei_zhujie; /** * 一、枚举类的使用: * 1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类 * 2.当需要定义一组常量时,强烈建议使用枚举类 * 3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式。 * * 二、如何定义枚举类 * 方式一: jdk5.0之前,自定义枚举类 * 方式二:jdk5.日,可以使用enum关键字定义枚举类 * *三、Enum类中的常用方法: * values()方准:返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。 * valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象名称 * toString():返回当前枚举类对象常量的名粉 * * 四、使用enum关键字定义的枚举类实现接口的情况 * 情况一:实现接口,在enum类中实现抽象方法 * 情况二:让枚举类的对象分别实现接口中的抽象方法 * * @author Dixon * @create 2022-05-31 22:27 */ public class EnumTest { public static void main(String[] args) { Season autumn = Season.AUTUMN; System.out.println(autumn); } } //自定义枚举类 class Season{ //1.声明Season对象的属性: private、final修饰 private String seasonName; private 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; } //或者提供toString方法 @Override public String toString() { return "Season{" + "seasonName='" + seasonName + '\'' + ", seasonDesc='" + seasonDesc + '\'' + '}'; } }
package com.changyonglei.meijulei_zhujie; /** * 使用enum关键字定义枚举类 * 说明:定义的枚举类默认继承于java.Lang.Enum类 * * * @author Dixon * @create 2022-05-31 22:27 */ interface Info{ void show(); } public class EnumTest2 { public static void main(String[] args) { Season1 spring = Season1.SPRING; // toString() System.out.println(spring.toString()); // SPRING System.out.println(Season1.class.getSuperclass()); //class java.lang.Enum System.out.println("------values()----------"); //values() Season1[] values = Season1.values(); for (int i = 0; i < values.length;i++) { System.out.println(values[i]); } System.out.println("------values()举例----------"); //values()举例 Thread.State[] states = Thread.State.values(); for (int i = 0; i < states.length; i++) { System.out.println(states[i]); } System.out.println("----valueOf(String str)------------"); //valueOf(String str):返回枚举类中对象名食objName的对象,如果没有找到则抛异常IllegalArgumentException Season1 autumn = Season1.valueOf("AUTUMN"); //正常 System.out.println(autumn); // Season1 autumn1 = Season1.valueOf("AUTUMN1"); //找不到的情况 // System.out.println(autumn1);// 抛异常:IllegalArgumentException System.out.println("------show()----------"); spring.show(); } } //自定义枚举类 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("大约在冬季"); } }; //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("这是一个季节!"); // } }
posted on 2022-06-04 10:36 Dixon_Liang 阅读(45) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!