首页 > 编程语言 >java使用枚举消除 if/else

java使用枚举消除 if/else

时间:2023-07-04 13:47:44浏览次数:38  
标签:java eat void System else 枚举 println public out

有这样一个判断场景。

if ("dog".equals(animalType)){
    System.out.println("吃骨头");
} else if ("cat".equals(animalType)) {
    System.out.println("吃鱼干");
} else if ("sheep") {
    System.out.println("吃草");
}

先定义一个接口,里面有一个通用方法 eat()

public interface Eat {
    //吃
    String eat();
}

然后创建枚举类实现这个接口

public enum AnimalEnum implements Eat {
    Dog(){
        @Override
        public void eat() {
            System.out.println("吃骨头");
        }
    },

    Cat() {
        @Override
        public void eat() {
            System.out.println("吃鱼干");
        }
    },

    Sheep() {
        @Override
        public void eat() {
            System.out.println("吃草");
        }
    }
}

调用的时候只需要一行代码:

public class Test {
    public static void main(String[] args) {
        AnimalEnum.valueOf("Cat").eat();
    }
}

以后假如想再扩充新的动物,只需要去枚举类中加代码即可,而不用改任何老代码,符合开闭原则

标签:java,eat,void,System,else,枚举,println,public,out
From: https://www.cnblogs.com/privateLogs/p/17525521.html

相关文章

  • java动态编译
        packagesrc;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.BufferedReader;importjavax.tools.JavaCompiler;importjavax.tools.ToolProvider;publicclassDemo01{ publicstaticvoidm......
  • Java JUI编程
    前言初学,虽然不常用了,但对于理解MVC很有帮助,顺带学一下把。1.简介核心技术是SwingAwt(Awt是Swing前身)需要学:窗口,弹窗,面板,文本框,列表框,按钮,图片,监听事件,鼠标,键盘。2.AWT2.1窗口Framenew一个Frame可以实现,也可以通过继承封装。publicclassMyFrameextendsFrame......
  • Java方法
    Java方法什么是方法1.方法是语句的集合2.设计方法的原则一个方法就做一件事方法的定义和调用修饰符返回值类型方法名(参数类型参数名){...方法体...return返回值}方法的重载1.同样的方法名通过调整参数的数量类型进行重载(跟返回值类型无关)、2.按......
  • 2023春招面试题:Java并发相关知识
    1.基础知识回顾1.1什么是多线程?在没有线程的年代,在同一个进程中,程序的处理流程都是顺序的,下一个流程的开始必须等待上一个流程的结束,如果其中某一个流程非常耗时,那么会影响整个流程的处理时间cpu执行过程中并不是一个程序执行完之后cpu才切换,cpu时间片用完,就会切换到下个线程......
  • java http大文件断点续传上传组件
    ​ 我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。首先我们需要了解的是上传文件三要素:1.表单提交方式:post(get方式提交有大小限制,post没有)2.表单的enctype属性:必须设置为multipart/form-data.3.表单必须......
  • Java集合之Disruptor 介绍
    目录1Disruptor1.1简介1.1.1定义1.1.2Java中线程安全队列1.1.3Disruptor核心概念1.2操作1.2.1坐标依赖1.2.2创建事件1.2.3创建事件工厂1.2.4创建处理事件Handler--消费者1.2.5初始化Disruptor1.2.5.1静态类1.2.5.2配置类1.2.5.3Disruptor构造函数讲解1.2.6发布......
  • 初学者:8个JavaScript技巧
    有很多方法可以优化我们的JavaScript代码,本文总结了我在工作中经常使用的8个JavaScript技巧,希望它也能帮助你。减少使用if-else在编写两个以上的if...else时,是否有更好的优化方法?如下代码,我们需要根据一个汉堡包的名字来计算它的价格。constgetPriceByName=(na......
  • JavaScript中的if与switch的区别是什么?
    很多同学问我if和swicth的区别,今天我就从多个维度来和大家分析一下if与switch的区别到底是什么?1.语法结构:if语句:使用if关键字后接条件表达式,如果条件为真,则执行if块中的代码。switch语句:使用switch关键字后接一个表达式,根据表达式的值匹配相应的case标签,并执行对应的代码块。2.可读......
  • JavaScript中的if与switch的区别是什么?
    很多同学问我if和swicth的区别,今天我就从多个维度来和大家分析一下if与switch的区别到底是什么?1.语法结构:if语句:使用if关键字后接条件表达式,如果条件为真,则执行if块中的代码。switch语句:使用switch关键字后接一个表达式,根据表达式的值匹配相应的case标签,并执行对应的代码块。2.可读......
  • vscode不支持 java 1.8 问题
    vscode不支持jdk1.8问题,实际上是 vscode的部分java插件不支持java1.8有些插件要求jdk11以上,可降级避开,不过没必要有些插件要求jdk17以上可以同时安装两个版本的jdk,例如jdk1.8和jdk17在vscode的settings.json文件中,添加jdk配置,将java1.8设为默认"java.jdt.ls......