java中enum 实现接口
2021/6/25 14:57:13
本文主要是介绍java中enum 实现接口,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
为什么会有这篇文章呢?日常生活中遇到了一个问题。听我慢慢说来
场景
我在组件中封装了一个BaseResultEnum;用来定义返回的错误码和错误信息。
UNKNOWN_EXCEPTION(500, "未知异常,请联系系统管理员"),
各个业务项目也写了类似的 枚举类。但是再返回的时候,必须xxxResultEnum.code,xxxResultEnum.msg 2个参数进行传递进来。因为枚举不能继承。
实现
有一天忽然发现可以枚举可以实现接口。上层定义一个统一的接口不就好了
public interface IResultCode { /** * 返回码 * * @return Integer */ Integer getCode(); /** * 返回消息 * * @return String */ String getMsg(); }
枚举类
@Getter @AllArgsConstructor public enum BaseResultEnum implements IResultCode { //========================全局结果枚举==============================// /** * 未知异常 */ UNKNOWN_EXCEPTION(500, "未知异常,请联系系统管理员"), /** * 操作成功 */ SUCCESS(200, "操作成功"), /** * 业务异常 */ FAILURE(400, "业务异常"), /** * 服务未找到 */ NOT_FOUND(404, "服务未找到"); //========================具体业务自定义异常==============================// // 建议 一个业务模块固定的编码100开始:比如:100001、100002; /** * 状态码 */ final Integer code; /** * 消息内容 */ final String msg; }
这样的话。业务内就自己定义自己项目内的错误信息就可以
@Getter @AllArgsConstructor public enum LearningResultEnum implements IResultCode { /** * 学习未找到 */ LEARNING_NOT_FOUND(1001, "该学习未找到"); /** * 状态码 */ final Integer code; /** * 消息内容 */ final String msg; }
具体使用
throw new LearningException(LearningResultEnum.LEARNING_NOT_FOUND); // 这里封装了一下 就可以直接接口当作参数 public BaseException(IResultCode resultEnum) { super(resultEnum.getMsg()); this.msg = resultEnum.getMsg(); this.code = resultEnum.getCode(); }
这篇关于java中enum 实现接口的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26手写消息中间件:从零开始的指南
- 2024-11-26Java语音识别项目资料:新手入门教程
- 2024-11-26JAVA语音识别项目资料:新手入门教程
- 2024-11-26Java语音识别项目资料:入门与实践指南
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料:新手入门教程
- 2024-11-25Java创意资料:新手入门的创意学习指南
- 2024-11-25JAVA对接阿里云智能语音服务资料详解:新手入门指南
- 2024-11-25Java对接阿里云智能语音服务资料详解