java - Java 中枚举中的 null

标签 java spring enums

我的 Controller 中的功能有 3 个枚举类型。此外,还对 UI 设置了适当的检查。但是,如果有人用等于 null 的值测试 API,那么我不知道如何处理。

代码如下:

public enum AuthStatus implements Comparable<AuthStatus> {
    ABC("test", "testtt", -1), 
    DEF("tesds", "dsds", 0), 
    .
    .

如果有效负载中给出了 ABC 或 DEF,一切正常,如果有效负载中没有给出任何内容该怎么办,即“”。

基本上,我想添加“”作为枚举类型,例如:

ABC("test", "testtt", 2), 
DEF("tesds", "dsds", 0), 
""("invalid", "Not Valid", -1) // What should be replaced by "".

最佳答案

枚举名称必须是有效的 Java 标识符,并且不存在字符长度为零的有效 Java 标识符。

如果您想将输入与某个值进行匹配,那么使用 Java 枚举名称来表达这不是一个好主意,因为 Java 标识符还有更多限制(不能包含空格或许多其他字符)。您应该向枚举添加另一个字段,您可以将其称为 matchValue,并将您的输入与该值而不是枚举名称进行匹配。

public enum AuthStatus implements Comparable<AuthStatus> {
    ABC("ABC", "test", "testtt", -1), 
    INVALID("", "invalid", "Not Valid", -1);

    private final String matchValue;

    private AuthStatus(String matchValue, ...) {
        this.matchValue = matchValue;
    }
}

关于java - Java 中枚举中的 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50903792/

相关文章:

java - #(井号)符号的含义

java.net.SocketException : Socket is closed

java - 使用基于 java 的注释从 Spring MVC 中的属性文件读取值

java - TypeScript:向枚举添加更多数据

.net - 两个成员枚举与 boolean 值

java - Java 9 中的 opens 指令

java - Spring Boot OAuth2 不重定向到 facebook

java - Spring boot session management - 为什么有两个sessionRegistry实例?

java - 是否有与 java.util.concurrent.TimeUnit 等效的文件大小单元的 Java 枚举?

java - Quartz Spring CronTrigger 触发的次数比配置的多