枚举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());
        }
    }
}

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

所谓远行Misnearch

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值