java 参数校验 枚举
时间: 2023-08-08 08:09:51 浏览: 52
Java 参数校验可以使用Java Bean Validation(JSR 303)规范,其中包括了很多注解来校验参数,比如@NotNull、@Min、@Max、@Size等。
枚举可以在参数校验中使用,比如可以使用@EnumValidator注解来校验参数是否为指定的枚举值。以下是一个使用枚举校验参数的示例代码:
```
public enum Gender {
MALE, FEMALE
}
public class User {
@NotNull
private String name;
@EnumValidator(enumClass = Gender.class, message = "gender must be MALE or FEMALE")
private Gender gender;
// getters and setters
}
public class UserService {
public void createUser(@Valid User user) {
// do something
}
}
```
在上述代码中,@EnumValidator注解用于校验gender属性是否为Gender枚举中的值。如果不是,会抛出校验异常并提示"gender must be MALE or FEMALE"。
相关问题
Java 枚举常量 校验
如果您想校验一个 Java 枚举常量是否存在,可以使用 Enum 类的 valueOf() 方法。该方法接受一个字符串作为参数,返回一个与该字符串同名的枚举常量。如果该字符串没有对应的枚举常量,则会抛出 IllegalArgumentException 异常。以下是一个示例代码:
```java
public enum Color {
RED, GREEN, BLUE;
}
public class Main {
public static void main(String[] args) {
String colorName = "RED";
try {
Color color = Color.valueOf(colorName);
System.out.println("枚举常量 " + colorName + " 存在!");
} catch (IllegalArgumentException e) {
System.out.println("枚举常量 " + colorName + " 不存在!");
}
}
}
```
在上面的代码中,我们定义了一个枚举类型 Color,然后使用 valueOf() 方法校验一个字符串是否为该枚举类型的合法常量。如果该字符串为 "RED"、"GREEN" 或 "BLUE" 中的任意一个,则输出“枚举常量存在”,否则输出“枚举常量不存在”。
JAVA 枚举校验 允许null java实例
好的,如果需要允许 null 值的校验,可以在 valueOf() 方法的基础上进行扩展。具体来说,可以在枚举类型中添加一个 UNKNOWN 枚举值,用于表示输入值为 null 或无法识别的值。示例代码如下:
```java
public enum Fruit {
APPLE,
BANANA,
ORANGE,
UNKNOWN;
public static Fruit fromString(String input) {
if (input == null) {
return UNKNOWN;
}
try {
return Fruit.valueOf(input.toUpperCase());
} catch (IllegalArgumentException ex) {
return UNKNOWN;
}
}
}
public class EnumValidationDemo {
public static void main(String[] args) {
String input1 = "APPLE";
Fruit fruit1 = Fruit.fromString(input1);
System.out.println(fruit1);
String input2 = null;
Fruit fruit2 = Fruit.fromString(input2);
System.out.println(fruit2);
}
}
```
在上面的代码中,我们在 Fruit 枚举类型中添加了一个 UNKNOWN 枚举值,用于表示输入值为 null 或无法识别的值。然后,我们定义了一个静态方法 fromString(),该方法接受一个字符串参数,并返回对应的 Fruit 枚举值。在 fromString() 方法中,我们首先判断输入值是否为 null,如果是,则返回 UNKNOWN 枚举值。否则,我们尝试使用 valueOf() 方法将输入值转换为 Fruit 枚举值,如果转换失败,则返回 UNKNOWN 枚举值。在主函数中,我们分别使用 input1 和 input2 来测试 fromString() 方法,其中 input1 的值为 "APPLE",input2 的值为 null。运行程序后,输出结果分别为 APPLE 和 UNKNOWN,符合预期。