当前位置: 首页 > news >正文

枚举Enum用法

ava 中的 Enum(枚举)是一种特殊的数据类型,用于定义一组固定的常量。

基本用法

使用关键字enum进行定义,通常包含一组命名的常量。每个枚举常量都是枚举类型的一个实例
例如:

public enum Day{
	MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

上述示例就是Day是一个枚举类型,枚举常量是Day类型的实例。

枚举的特性

类型安全:枚举提供了类型安全,不能随意赋值,只能使用枚举中定义的常量。

实例方法:枚举可以包含方法,包括实例方法和静态方法。

构造函数:枚举可以有构造函数,但不能使用 new 关键字实例化枚举类型。

实现接口:枚举可以实现接口,从而提供更多的功能。

枚举集合:Java 提供了 EnumSet 和 EnumMap 等集合类,专门用于处理枚举类型

使用枚举定义错误状态码

枚举非常适合用于定义错误状态码。通过枚举,可以将错误码集中管理,提高代码的可读性和可维护性。以下是一个使用枚举定义错误状态码的示例:

public enum ErrorCode {
	
	// 定义常见的错误状态码
	SUCCESS(200, "success"),
	BAD_REQUEST(400, "Bad request"),
	UNAUTHORIZED(401, "Unauuthorized"),
	FORBIDDEN(403, "Forbidden"),
	NOT_FOUND(404, "Not Found"),
	INTERNAL_SEVER_ERROR(500, "Internal Server Error");
	
	
	// 定义属性
	private final int code; // 错误码
	private final String message; // 错误信息
	
	// 构造函数
	ErrorCode(int code, String message){
		this.code = code;
		this.message = message;
	}
	
	// 获取错误码
	public int getCode(){
		return code;
	}
	
	// 获取错误信息
	public String getMessage() {
		return message;
	}
	
	// 根据错误码查找对应的枚举实例
	public static ErrorCode fromCode(int code){
		// 遍历枚举常量进行查找
		for (ErrorCode errorCode : ErrorCode.values()){
			if (errorCode.getCode() == code){
				retrun errorCode;
			}
		}
		throw new IllegalArgumentException("Invalid error code: " + code);
	}
}

在方法中返回错误状态

public class UserService {
    public ErrorCode login(String username, String password) {
        if (username == null || password == null) {
            return ErrorCode.BAD_REQUEST;
        }

        // 模拟用户验证逻辑
        if (!isValidUser(username, password)) {
            return ErrorCode.UNAUTHORIZED;
        }

        return ErrorCode.SUCCESS;
    }

    private boolean isValidUser(String username, String password) {
        // 实际验证逻辑
        return "admin".equals(username) && "password".equals(password);
    }
}

处理错误状态

public class Main {
    public static void main(String[] args) {
        UserService userService = new UserService();
        ErrorCode result = userService.login("admin", "wrong_password");

        switch (result) {
            case SUCCESS:
                System.out.println("Login successful!");
                break;
            case UNAUTHORIZED:
                System.out.println("Login failed: " + result.getMessage());
                break;
            case BAD_REQUEST:
                System.out.println("Invalid input: " + result.getMessage());
                break;
            default:
                System.out.println("Unexpected error: " + result.getMessage());
        }
    }
}

通过枚举定义错误状态码,可以使代码更加清晰、安全和易于维护。

相关文章:

  • ros:ur机械臂初识
  • 基于STM32的智能垃圾分类回收系统
  • 【kafka系列】At Most Once语义
  • matlab-simulink
  • 鲸鱼算法优化Transformer+KAN网络并应用于时序预测任务
  • TrueNAS in Hyper-V
  • React:初识React
  • 脉冲当量含义
  • 国内已经部署DeepSeek的第三方推荐
  • Java 基于 SpringBoot+Vue 的家政服务管理平台设计与实现
  • TypeScript type 和 interface 的区别
  • 计算机视觉-尺度不变区域
  • mysql的rpm包安装
  • PyQt6/PySide6 的 SQL 数据库操作(QtSql)
  • SpringBoot:解决前后端请求跨域问题(详细教程)
  • pytourch训练识别单个数字的图片
  • 【STM32】DRV8833驱动电机
  • APlayer - APlayer 初识(APlayer 初识案例、APlayer 常用事件)
  • C++中常用的十大排序方法之4——希尔排序
  • 代码随想录算法训练营第三十九天| 动态规划03
  • 工行回应两售出金条疑似有杂质:情况不属实,疑似杂质应为金条售出后的外部附着物
  • 850亿元!2025年中央金融机构注资特别国债(一期)拟第一次续发行
  • 晋级中部非省会第一城,宜昌凭什么
  • 复旦发文缅怀文科杰出教授裘锡圭:曾提出治学需具备三种精神
  • 抗战回望21︱《“良民”日记》:一个“良民”在沦陷区的见闻与感受
  • 波音公司计划于2027年交付新版“空军一号”飞机