当前位置: 首页 > article >正文

【Java】Enum类的常用方法、实现接口及其实际应用

Enum类的常用方法

  1. package com.star.enum03;
  2. /**
  3.  * @author : Starshine
  4.  */
  5. public class TestSeason {
  6.     //这是一个main方法,是程序的入口:
  7.     public static void main(String[] args) {
  8.         //用enum关键字创建的Season枚举类上面的父类是:java.lang.Enum,常用方法子类Season可以直接拿过来使用:
  9.         //toString();--->获取对象的名字
  10.         Season autumn = Season.AUTUMN;
  11.         System.out.println(autumn/*.toString()*/);//AUTUMN
  12.         System.out.println("--------------------");
  13.         //values:返回枚举类对象的数组
  14.         Season[] values = Season.values();
  15.         for(Season s:values){
  16.             System.out.println(s/*.toString()*/);
  17.         }
  18.         System.out.println("--------------------");
  19.         //valueOf:通过对象名字获取这个枚举对象
  20.         //注意:对象的名字必须传正确,否则抛出异常
  21.         Season autumn1 = Season.valueOf("AUTUMN");
  22.         System.out.println(autumn1);
  23.     }
  24. }

枚举类实现接口

定义一个接口:

  1. public interface TestInterface {
  2.     void show();
  3. }

枚举类实现接口,并且重写show方法:

  1. public enum Season implements TestInterface {
  2.     SPRING,
  3.     SUMMER,
  4.     AUTUMN,
  5.     WINTER;
  6.     @Override
  7.     public void show() {
  8.         System.out.println("这是Season....");
  9.     }
  10. }

测试类:

  1. public class Test {
  2.     //这是一个main方法,是程序的入口:
  3.     public static void main(String[] args) {
  4.         Season autumn = Season.AUTUMN;
  5.         autumn.show();
  6.         Season summer = Season.SUMMER;
  7.         summer.show();
  8.     }
  9. }

上面发现所有的枚举对象,调用这个show方法的时候走的都是同一个方法,结果都一样:

但是现在我想要:不同的对象  调用的show方法也不同:

  1. package com.star.enum04;
  2. import java.sql.SQLOutput;
  3. public enum Season implements TestInterface {
  4.     SPRING{
  5.         @Override
  6.         public void show() {
  7.             System.out.println("这是春天。。。");
  8.         }
  9.     },
  10.     SUMMER{
  11.         @Override
  12.         public void show() {
  13.             System.out.println("这是夏天。。");
  14.         }
  15.     },
  16.     AUTUMN{
  17.         @Override
  18.         public void show() {
  19.             System.out.println("这是秋天");
  20.         }
  21.     },
  22.     WINTER{
  23.         @Override
  24.         public void show() {
  25.             System.out.println("这是冬天");
  26.         }
  27.     };
  28.     /*@Override
  29.     public void show() {
  30.         System.out.println("这是Season....");
  31.     }*/
  32. }

测试类:

  1. public class Test {
  2.     //这是一个main方法,是程序的入口:
  3.     public static void main(String[] args) {
  4.         Season autumn = Season.AUTUMN;
  5.         autumn.show();
  6.         Season summer = Season.SUMMER;
  7.         summer.show();
  8.     }
  9. }

实际应用

  1. package com.star.enum05;
  2. /**
  3.  * @author : Starshine
  4.  */
  5. public class Person {
  6.     //属性:
  7.     private int age;
  8.     private String name;
  9.     private Gender sex;
  10.     public int getAge() {
  11.         return age;
  12.     }
  13.     public void setAge(int age) {
  14.         this.age = age;
  15.     }
  16.     public String getName() {
  17.         return name;
  18.     }
  19.     public void setName(String name) {
  20.         this.name = name;
  21.     }
  22.     public Gender getSex() {
  23.         return sex;
  24.     }
  25.     public void setSex(Gender sex) {
  26.         this.sex = sex;
  27.     }
  28.     @Override
  29.     public String toString() {
  30.         return "Person{" +
  31.                 "age=" + age +
  32.                 ", name='" + name + '\'' +
  33.                 ", sex='" + sex + '\'' +
  34.                 '}';
  35.     }
  36. }

  1. public enum Gender {
  2.     男,
  3.     女;
  4. }

  1. public class Test {
  2.     //这是一个main方法,是程序的入口:
  3.     public static void main(String[] args) {
  4.         Person p = new Person();
  5.         p.setAge(19);
  6.         p.setName("lili");
  7.         p.setSex(Gender.男);//传入枚举类Gender的对象:-->在入口处对参数进行了限制
  8.         System.out.println(p);
  9.     }
  10. }

还可以通过枚举结合switch处理:

  1. public class Test02 {
  2.     //这是一个main方法,是程序的入口:
  3.     public static void main(String[] args) {
  4.         Gender sex = Gender.男;
  5.         //switch后面的()中可以传入枚举类型
  6.         //switch后面的():int,short,byte,char,String ,枚举
  7.         switch (sex){
  8.             case 女:
  9.                 System.out.println("是个女孩");
  10.                 break;
  11.             case 男:
  12.                 System.out.println("是个男孩");
  13.                 break;
  14.         }
  15.     }
  16. }

http://www.kler.cn/a/553726.html

相关文章:

  • 小胡说技书博客分类(部分目录):服务治理、数据治理与安全治理对比表格
  • DeepSeek与ChatGPT:AI语言模型的全面技术解析与对比
  • Matlab离线安装硬件支持包的方法
  • 68页PDF | 数据安全总体解决方案:从数据管理方法论到落地实践的全方位指南(附下载)
  • LLaVA-CoT: Let Vision Language Models Reason Step-by-Step论文解读
  • 基于知识图谱的问答系统:后端Python+Flask,数据库Neo4j,前端Vue3(提供源码)
  • AI赋能传统系统:Spring AI Alibaba如何用大模型重构机票预订系统?
  • SpringBoot启动java.nio.charset.MalformedInputException: Input length = 1报错的解决方案
  • Function.prototype.__proto__==Object.prototype
  • 文心一言,下一代模型开源
  • Android Hal AIDL 简介 (一)
  • 什么是Ajax
  • AI 安全时代:SDL与大模型结合的“王炸组合”——技术落地与实战指南
  • 动静态链接与加载
  • GPT-SoVITS更新V3 win整合包
  • 【云原生】SpringCloud-Spring Boot Starter使用测试
  • CST案例:UAV无人机RCS --- 双站,I求解器,比例缩放
  • 大模型驱动的业务自动化
  • 轻量级5G核心网:适应未来网络需求的关键方案
  • 基于VLC的Unity视频播放器(三)