Java中自定义枚举工具类,根据枚举类code获取msg

本文讲述了在Java开发中如何使用CodeEnum接口定义枚举类(如CustomEnum),以及如何通过EnumUtil工具类根据枚举类的code获取相应的msg,以解决实际开发中的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人开发过程中遇到的问题,类似map获取数据的方式,根据枚举类code获取msg。

第一步,定义CodeEnum接口,需要枚举类实现该接口,如下

public interface CodeEnum {

    Integer getCode();

    String getMsg();
}

第二步,创建自定义枚举类CustomEnum,实现CodeEnum接口,如下

public enum CustomEnum implements CodeEnum {
    
    SUCCESS(1,"请求成功"),
    
    FAIL(0,"请求失败")
    ;

    private Integer code;
    private String msg;

    CustomEnum(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    @Override
    public Integer getCode() {
        return code;
    }

    @Override
    public String getMsg() {
        return msg;
    }
}

第三步,创建枚举工具类EnumUtil,如下

public class EnumUtil {
    public static <T extends CodeEnum> String getByCode(Integer code, Class<T> t){
        for(T item: t.getEnumConstants()){
            if(item.getCode() == code){
                return item.getMsg();
            }
        }
        return "";
    }
}

第四步,具体代码调用方式如下,结果如下图

@Test
public void testEnumUtil() {
    log.info("测试中!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    String msg = EnumUtil.getByCode(CustomEnum.SUCCESS.getCode(), CustomEnum.class);
}

image.png

### 关于状态码工具类Java 开发中,特别是基于 Spring Boot 的项目里,创建一个用于处理 HTTP 状态码和其他自定义业务逻辑的状态码工具类是非常常见且推荐的做法。这类工具可以简化错误处理流程并提高代码可读性和维护性。 #### 构建状态码枚举类 一种有效的方式是通过枚举来管理不同类型的响应状态及其对应的消息描述: ```java public enum StatusCodeEnum { SUCCESS(200, "成功"), BAD_REQUEST(400, "请求参数有误"), UNAUTHORIZED(401, "未授权访问"), FORBIDDEN(403, "拒绝访问"), NOT_FOUND(404, "资源不存在"); private final int code; private final String description; StatusCodeEnum(int code, String description) { this.code = code; this.description = description; } public int getCode() { return code; } public String getDescription() { return description; } } ``` 此枚举不仅涵盖了标准的 HTTP 响应码[^1],还可以扩展以支持特定应用内的业务异常情况[^2]。 #### 创建统一的结果封装对象 为了更好地与前端交互,在服务端通常会有一个通用的数据传输对象 (DTO),它包含了操作结果的状态码、提示信息以及实际数据等内容: ```java @Data // Lombok 注解自动实现 getter/setter 方法 public class Result<T> { private Integer status; private String message; private T data; public static <T> Result<T> success(T data){ Result<T> result=new Result<>(); result.setStatus(HttpStatus.OK.value()); result.setMessage("success"); result.setData(data); return result; } public static Result<?> failure(Integer statusCode,String msg){ Result<Object> result= new Result<>(); result.setStatus(statusCode); result.setMessage(msg); return result; } // 更多静态工厂方法... } ``` 上述 `Result` 类允许开发者轻松构建一致性的 JSON 格式的 API 返回值结构。 #### 使用 HttpClient 工具发送带状态码验证的请求 当涉及到外部系统的调用时,可以通过定制化的 HttpClient 来执行带有状态码校验的操作。下面是一个简单的例子展示如何利用 Apache HttpComponents 库来进行 GET 请求,并检查服务器返回的状态码是否正常[^3]: ```java import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; // ... CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet(url); try(CloseableHttpResponse response=httpClient.execute(httpGet)){ int statusCode=response.getStatusLine().getStatusCode(); if(statusCode>=HttpStatus.SC_OK && statusCode< HttpStatus.SC_MULTIPLE_CHOICES){ System.out.println("Request succeeded with status "+statusCode); }else{ throw new RuntimeException("Failed : HTTP error code : " +response.getStatusLine().getReasonPhrase()); } } catch(Exception e){ e.printStackTrace(); } finally{ try{if(httpClient!=null){httpClient.close();}}catch(IOException ex){} } ``` 以上代码片段展示了如何安全地发起一次 HTTP GET 请求,并依据接收到的状态码决定后续动作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值