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,符合预期。

相关推荐

代码优化 public Result phmOperate(Operation operation) { HlwExmMessage msg = messageService.queryMsgById(operation.getMsgId()); if (msg == null||!HlwExmMessage.FORWARD_DOC_TO_PHM.equals(msg.getForward())) { return new Result<>(Status.ERROR, "被处置消息无效!"); } if (msg.getOperateMsgId() != null) { return new Result<>(Status.UN_ACCESS_OPERATION, "消息已处置,重复处置无效!"); } HlwExmMessage<DocOperateMsg> msg2 = messageService.queryDocToPhmMsg(msg.getTaskId()); Integer msgId2 = msg2 == null ? null : msg2.getMsgId(); if (!Objects.equals(msg.getMsgId(), msgId2)) { //当前被处置消息与任务最后一条消息不是同一条消息, //原因:第一次审查通过后,药师正准备提交审方结果时,医生重新修改医嘱提交,造成药师审核的医嘱信息已过期。 // 最终会形成一个审方任务干预记录中有两个及以上药师审核通过,也有可能药师不通过,造成审方流程错乱 return new Result(Status.UN_ACCESS_OPERATION, "被处置消息已过期,处置无效,医生已修改医嘱,请刷新任务!"); } List<String> operations = msg.getOperations(); PhmOperation opCode = operation.getOperation(); if (!operations.contains(opCode.name())) {//校验操作是否合法。每个消息可处置方式不同: return new Result<>(Status.ERROR, "非法处置:当前消息可选择的处置方式" + operations.toString()); } return operate(operation, msg, opCode) ? Result.SUCCESS : new Result<>(Status.UN_ACCESS_OPERATION, "当次就诊已作废,处置失败!"); } //返回false 任务作废 private boolean operate(Operation operation, HlwExmMessage msg, PhmOperation code) { ExmTask task = taskService.queryExmTask(msg.getMsgId()); if(ExmState.TASK_ABOLISHED.equals(task.getState())){ return false; } ExmState taskState = OperateUtil.getTaskState(code, msg.getMsgType()); task.setState(taskState); task.setPhmOperateTime(DateUtil.getCurrDateStr(DateUtil.YYYY_MM_DD_HH_MM_SS)); ParamVersion paramVersion = paramVersionService.queryLastVersionByTaskId(task.getId(), msg.getParamVersionId()); HlwExmMessage phmToDocMsg = HlwExmMessageUtil.buildPhmToDocMsg(operation, task, paramVersion,msg.getMsgType()); taskService.updateExmTask(task); phmToDocMsg.setCtrMaxLv(msg.getCtrMaxLv()); messageService.addMessage(phmToDocMsg); messageService.updateOperateMsg(operation.getMsgId(),phmToDocMsg.getMsgId()); if (taskState.isFinished()){//任务结束。转存最终结果表 storeFinalData(paramVersion); } return true; }

最新推荐

recommend-type

springboot validator枚举值校验功能实现

主要介绍了springboot validator枚举值校验功能实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
recommend-type

java完整性校验解决方案

JAVA中进行数据完整性验证 最近在看JAVA安全方面的东东。简单地说,安全包括访问控制、数据安全两部分。安全访问控制是根据系统需求进行设计的,对资源进行访问控制的一种措施。而数据安全包括数据传输过程中的安全...
recommend-type

JAVA实现社会统一信用代码校验的方法

主要介绍了JAVA实现社会统一信用代码校验的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

浅谈java获取UUID与UUID的校验

主要介绍了java获取UUID与UUID的校验,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

Java防止文件被篡改之文件校验功能的实例代码

主要介绍了Java防止文件被篡改之文件校验功能,本文给大家分享了文件校验和原理及具体实现思路,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。