如何在给定Java代码场景下实现三元运算符?
用三元运算符重构Java分支逻辑
首先,原代码里两个分支都重复执行了response.setMessage(message),可以先把这行抽离出来避免冗余。三元运算符更适合根据条件选择值而非执行语句块,所以我们把能通过三元赋值的属性单独处理,需要执行方法(比如save)的部分保留简单条件判断即可。
重构后的代码
Response response = new Response(); response.setMessage(message); // 两个分支都执行,提前抽离 // 用三元运算符动态选择状态码 response.setCodeStatut(Objects.equals(message, Const.CONFIRMATION) ? Const.HTTP_200 : Const.HTTP_400); // 仅当条件成立时设置保单号并保存响应 if (Objects.equals(message, Const.CONFIRMATION)) { response.setNumPolice(c.getNumPolice()); responseRepository.save(response); } return response;
逻辑说明
setCodeStatut的参数是典型的三元运算符适用场景:根据条件直接选择不同的常量值赋值,代码简洁直观。setNumPolice和responseRepository.save()都是无返回值的方法调用,三元运算符要求两边表达式返回类型一致,这类操作强行用三元实现会降低可读性,保留简单的if判断更符合代码规范。
如果非要用三元处理setNumPolice(不推荐),可以这么写,但可读性很差:
// 不推荐:利用三元兼容void和null的特性执行方法,代码晦涩 Objects.equals(message, Const.CONFIRMATION) ? response.setNumPolice(c.getNumPolice()) : null;
内容的提问来源于stack exchange,提问作者BAKHALED Ibrahim
相关产品推荐
相关产品推荐

