接口 VS 枚举,如何管理常量?

news/2024/11/18 8:37:44/

你平时有哪种方式,管理常量呢?

  • public static final关键字
  • 接口:管理状态码或配置选项,需要在不同类中共享
  • 枚举:管理有限的常量集合,具有相关的信息提示或描述

1.public static final关键字?

public class Demo{public static fianl String RESULT_YES = "1";public static fianl String RESULT_NO = "0";
}// 实例
public static class DemoServiceImpl{public static void main(String []arg){System.out.println(Demo.RESULT_YES);  // 执行结果:1System.out.println(Demo.RESULT_NO);   // 执行结果:0}}

2.接口?

public class Demo{// public static fianl String RESULT_YES = "1";// public static fianl String RESULT_NO = "0";// 存储上报内容public interface Uplink{String HEARTBEAT = "01";String FLOW = "03";}// 存储反馈的内容public interface Downward{String HEARTBEAT_BACK = "02";String FLOW_BACK = "04";}}// 实例
public static class DemoServiceImpl{public static void main(String []arg){System.out.println(Demo.Uplink.HEARTBEAT);  // 执行结果:01System.out.println(Demo.Uplink.FLOW);   // 执行结果:03System.out.println(Demo.Downward.HEARTBEAT_BACK);  // 执行结果:02System.out.println(Demo.Downward.FLOW_BACK);   // 执行结果:04}}

3.枚举?


public class Demo{public static fianl String RESULT_YES = "1";public static fianl String RESULT_NO = "0";public enum demo{YES(200, "执行成功"), ERROR_500(500, "程序内部执行错误"), ERROR_404(404, "请求超时");private final int code;private final String desc;demo(int code, String desc){this.code = code;this.desc = desc;}public int getCode(){return code;}public String getDesc(){return desc;}}}// 实例
public static class DemoServiceImpl{public static void main(String []arg){int code = demo.YES.getCode();System.out.println(code);String desc = demo.YES.getDesc();System.out.println(desc);}}

这三种方法的使用场景是什么?

  1. public static final 是最常用的常量表示方式,可以用在任意场合;

  2. 接口:定义的常量,可供多个类共享;比如,我们可以通过该方法,实现对tcp协议上行/下行数据,进行分类管理;

  3. 枚举:像错误码,这种需要内容描述的,使用枚举实现;例如,错误类型500/ 404/ 200/ 503…(详见上文例子)


http://www.ppmy.cn/news/1281579.html

相关文章

Vue在页面上添加水印

第一步:在自己的项目里创建一个js文件;如图所示我在在watermark文件中创建了一个名为waterMark.js文件。 waterMark.js /** 水印添加方法 */ let setWatermark (str1, str2) > {let id 1.23452384164.123412415if (document.getElementById(id) …

FPGA分频电路设计(2)

实验要求: 采用 4 个开关以二进制形式设定分频系数(0-10),实现对已知信号的分频。 类似实验我之前做过一次,但那次的方法实在是太笨了: 利用VHDL实现一定系数范围内的信号分频电路 需要重做以便将来应对更…

Apache Commons BeanUtils: JavaBean操作的艺术

第1部分:Apache Commons BeanUtils 简介 咱们今天聊聊Apache Commons BeanUtils。这货简直就是处理JavaBean的利器,用起来又方便又快捷。不管是属性拷贝、类型转换,还是动态访问,BeanUtils都能轻松应对。 BeanUtils是啥&#xf…

基于SpringBoot+Vue实现的电影院售票系统

文章目录 项目介绍影院管理影片管理影厅管理订单管理用户管理角色权限管理 技术选型成果展示前台系统后台管理系统 账号及其他说明 项目介绍 基于SpringBootVue实现的电影院售票系统整体设计了用户、管理员两个角色。 用户登录系统可进行电影查看、分类查看、影片搜索、选择影…

Redis基础-Redis概念及常见命令

1.nosql数据库 NoSQL数据库是一种提供了非关系型数据存储的数据库系统,与传统的关系型数据库(如SQL数据库)不同。NoSQL数据库的特点是灵活性高,能够处理结构化、半结构化或非结构化数据。它们通常用于大数据和实时Web应用。NoSQL数…

白龙地铁消费项目(地铁消费系统,包括用户端、管理端)

大一学的C#可视化项目文件,所有功能均可使用。可以直接下载 下方是演示照片

【Unity资源管理】任何导入资源的配套导入器AssetImporter

AssetImporter 类是什么呢? 当在Unity中导入资源(比如图片、模型、音频等)时,Unity会根据资源的类型创建相应的AssetImporter! 在Unity中,每个导入的资源都会有一个相应的AssetImporter与之对应。当你将资…

【MySQL】脏读、不可重复读、幻读介绍及代码解释

🍎个人博客:个人主页 🏆个人专栏: 数 据 库 ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 结语 我的其他博客 前言 数据库事务隔离级别是关系数据库管理系统中一个重要的概念,它涉及到多个事务并发执行…