枚举的使用优化if-else

news2024/9/28 7:33:06

文章目录

目录

文章目录

前言

一、用来替代大量请求路径的判断

二、使用枚举来优化if-else结构

总结



前言

枚举是一种常用于替代复杂的if-else结构的优化工具。通过使用枚举,可以将多个条件判断语句转化为简单的case语句,提高代码的可读性和可维护性


一、用来替代大量请求路径的判断

首先创建一个函数式接口用来定义处理拼接路径的方法

@FunctionalInterface
public interface Introduce {

     /**
       *
       * 前缀
     */

    String PREFIX = "/common/";

    /**
     * 完整的路径信息
     *
     * @return {@code String}
     */
    String business();

}

然后定义枚举实现该接口,用来实现不同的具体路径

@AllArgsConstructor
@Getter
public enum IntroduceEnum implements Introduce {

    /**
     * 用户添加
     */
    UserAdd(){
        @Override
        public String business() {
            return PREFIX +"user/add";

        }
    },

    /**
     * 用户删除
     */
    UserDelete(){
        @Override
        public String business() {
            return PREFIX +"user/delete";
        }
    }
}

最后测试

 public static void main(String[] args) {

        IntroduceEnum userAdd = IntroduceEnum.UserAdd;
        String business = userAdd.business();
        System.out.println(business);


    }

 

这样就得到完整的路径了,然后可以根据需要用这个变量去做一些事情。 如果需要传入动态的路径,只需要把原来接口的方法里面添加上参数就可以实现

 

二、使用枚举来优化if-else结构

// 使用if-else结构实现某个功能
public void processStatus(String status) {
    if ("NEW".equals(status)) {
        // 处理新建状态的逻辑
    } else if ("IN_PROGRESS".equals(status)) {
        // 处理进行中状态的逻辑
    } else if ("COMPLETED".equals(status)) {
        // 处理已完成状态的逻辑
    } else if ("CANCELLED".equals(status)) {
        // 处理已取消状态的逻辑
    } else {
        // 处理其他未知状态的逻辑
    }
}

// 使用枚举优化if-else结构
public enum Status {
    NEW,
    IN_PROGRESS,
    COMPLETED,
    CANCELLED
}

public void processStatus(Status status) {
    switch (status) {
        case NEW:
            // 处理新建状态的逻辑
            break;
        case IN_PROGRESS:
            // 处理进行中状态的逻辑
            break;
        case COMPLETED:
            // 处理已完成状态的逻辑
            break;
        case CANCELLED:
            // 处理已取消状态的逻辑
            break;
        default:
            // 处理其他未知状态的逻辑
            break;
    }
}

可以看到,通过使用枚举,我们将复杂的if-else结构转化为了简洁的switch语句。这样做的好处包括:

  1. 代码更简洁明了:枚举类型提供了更直观、可读性更高的代码结构。
  2. 可扩展性强:如果需要添加新的状态,只需在枚举中新增一个值,并在对应的case块中处理逻辑。
  3. 避免了繁琐的字符串比较:枚举常量是唯一的,不需要进行字符串比较。

总结

总而言之,通过使用枚举可以有效地优化复杂的if-else结构,使代码更加清晰、易于维护和扩展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/921042.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

问道管理股票分析:股票开户后不交易会扣费吗?怎么注销?

相信日子中有许多人在办理一些如银行账户开户以及其他买卖业务时,会被建议注册一个证券账户,而相当多的人在注册完后就没有再搭理过这个账户了。那么,开户后不买卖会被扣费吗?觉得藏着没用的,该怎样去刊出?…

Linux下的系统编程——vim/gcc(二)

前言: 在Linux操作系统之中有很多使用的工具,我们可以用vim来进行程序的编写,然后用gcc来生成可执行文件,最终运行程序。下面就让我们一起了解一下vim和gcc吧 目录 一、vim编辑 1.vim的三种工作模式 2.基本操作之跳转字符 &a…

每日两题 111二叉树的最小深度 112路径总和(递归)

111 题目 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:2示例 2&#x…

创造势能,把握节奏

善于打仗的人,创造高势能,行动节奏恰当 【安志强趣讲《孙子兵法》第18讲】 【原文】 激水之疾,至于漂石者,势也;鸷鸟之疾,至于毁折者,节也。 【注释】 激,阻截水流 节,时…

ITIL4—战略与指导

战略与指导 成功的服务提供,需要朝着商定的目标采取协调一致的行动。本节将探讨服务供应商战略的创建和管理,其目的是首先对战略的本质、范围,以及战略与指导的关系建立基本的理解,然后为与该战略一致的指导活动提供指导。 本节…

最新APP下载官网源码带app预览,

适合做软件,游戏,产品,企业工作室官网,有能力的可自行二开。 源码:星域社区官网源码.zip - 蓝奏云

Delphi 开发手持机(android)打印机通用开发流程(举一反三)

目录 一、场景说明 二、厂家应提供的SDK文件 三、操作步骤: 1. 导出Delphi需要且能使用的接口文件: 2. 创建FMX Delphi项目,将上一步生成的接口文件(V510.Interfaces.pas)引入: 3. 将jarsdk.jar 包加入到 libs中…

Nuxt3环境变量配置

Nuxt3 正式发布还不到半年,在投入生产环境使用后,遇到了不少问题,很难找到合适的解决方案,其中环境变量配置就是其中一个,之前一直未能解决,最近要上持续集成,无法绕过这个问题,所以…

Connect-The-Dots靶场

靶场下载 https://www.vulnhub.com/entry/connect-the-dots-1,384/ 一、信息收集 探测存活主机 netdiscover -r 192.168.16.161/24nmap -sP 192.168.16.161/24端口操作系统扫描 nmap -sV -sC -A -p 1-65535 192.168.16.159扫描发现开放端口有 21 ftp 80 http 20…

labelImg的安装及其使用注意事项

一、安装labelImg 在低版本python的安装方法 1. 新建及激活进去虚拟环境 conda create --namelabelImg python3.9 conda activate labelImg注释:新建的虚拟环境的python版本不能超过3.9版本 2.安装相应的包 pip install pyqt5 pip install labelImg3.使用label…

Friend.tech爆火!Web3社交领域还有哪些项目值得关注?

要说Web3圈子里的“当红炸子鸡”,那必然是Friend.tech无疑了。 2023年8月10日,链上社交应用Friend.tech正式上线,短时间内便在Web3圈子里掀起了惊波澜,上线短短24小时,交易量便已超过810万美元。 FFriend.tech是一款建…

数据库——Redis 单线程模型详解

文章目录 Redis 基于 Reactor 模式来设计开发了自己的一套高效的事件处理模型 (Netty 的线程模型也基于 Reactor 模式,Reactor 模式不愧是高性能 IO 的基石),这套事件处理模型对应的是 Redis 中的文件事件处理器(file …

python提取文件夹指定文件以及删除指定文件

在做项目的过程中,往往需要提取文件夹中的指定文件至其他文件夹,或者要删除文件夹中的指定文件,如下图所示,当我需要将图片按照命名的尾数进行分类提取或者删除,依靠人工筛选是很麻烦的。 下面提供一个代码进行分类 i…

【DC-DC的原理图及Layout设计要点】

文章目录 前言1.DC-DC的环流2.PCB布局要点3.输入电容器的布局4.续流二极管的布局5.热焊盘 前言 在开关电源的设计中,PCB布局设计与电路设计同样重要。合理的布局可以避免电源电路引起的各种问题。不合理的布局可能导致输出和开关信号叠加引起噪声增加、调节性能恶化…

医学图像融合的深度学习方法综述

文章目录 Deep learning methods for medical image fusion: A review摘要引言非端到端的融合方法基于深度学习的决策映射基于深度学习的特征提取 端到端图像融合方法基于卷积神经网络(CNN)的图像融合方法单级特征融合方法多级特征融合基于残差神经网络的图像融合方法基于密集神…

中央重磅文件发布,成都民营企业家极米钟波:更加坚定发展信心决心

7月19日,《中共中央 国务院关于促进民营经济发展壮大的意见》发布。意见指出:民营经济是推动中国式现代化的生力军,是高质量发展的重要基础,是推动我国全面建成社会主义现代化强国、实现第二个百年奋斗目标的重要力量。 《意见》…

创建R包-2.2:在RStudio中使用Rcpp制作R-Package(更新于2023.8.23)

目录 4-添加C函数 5-编辑元数据 6-启用Roxygen,执行文档化。 7-单元测试 8-在自己的计算机上安装R包: 9-程序发布 参考: 为什么要写这篇文章的更新日期?因为R语言发展很快,很多函数或者方式,现在可以使…

哲讯科技携手无锡华启动SCM定制化项目,共谋数字化转型之路

无锡华光座椅弹簧有限公司启动SCM定制化项目 近日,无锡华光座椅弹簧有限公司顺利举行了SCM定制化项目的启动会。本次启动会作为该项目实施的重要里程碑,吸引了双方项目组核心成员的共同参与,并见证了项目的正式启动。 无锡华光座椅弹簧有限公…

opencv-全景图像拼接

运行环境 python3.6 opencv 3.4.1.15 stitcher.py import numpy as np import cv2class Stitcher:#拼接函数def stitch(self, images, ratio0.75, reprojThresh4.0,showMatchesFalse):#获取输入图片(imageB, imageA) images#检测A、B图片的SIFT关键特征点,并计算…

控制台的启动日志消失了?关键在于这些步骤!

linux学习视频 每次我们启动系统的时候,控制台都会显⽰出⼀⼤堆的启动⽇志。 有时候出于保密的考虑,不希望启动⽇志直接显⽰在控制台上。⽐如⼀些安全⼚商提供的基于 Linux 的硬件设备,⾥⾯可能有⼀些内容不希望⽤⼾看到。 这时候&#xff…