这篇文章主要介绍了java中如何减少,如果其他的编码方式,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
<强>方式一:提前返回强>
首先展示一段代码示例:
if (condition1), { if 才能;(condition2), { ,,,return getSomething (); ,,},{else ,,,return 0; ,,} },{else return 才能;0; }
修改后的代码如下:
//这里最好对这个国旗所判断的逻辑补充注释进行描述 boolean flag =, ! condition1 | |, (condition1 ,,, ! condition2) 如果(国旗),{ ,return 0; } if (condition1 ,,, condition2), { return 才能getSomething (); }
如果存在已知在某些条件下,需要返回固定值的逻辑,可以将这部分逻辑抽取为一个独立的if - else block ,并置于其他if - else块的前面,当符合该特定条件时,直接提前return 固定值。这种方式最直接的效果就是降低if - else的嵌套数量。
<强>方式二:使用三目运算符强>
先上例子,这里以一个业务场景为例:
查询某条评论的图片URL列表(如果有,评论的图片URL列表以JSON数组字符串格式保存在评论表中)
修改前的代码如下:
Comment Comment =, getById (commentId); if (Objects.isNull(评论),{ throw 才能;new  RuntimeException(“评论不存在或已被删除“); } String imgListStr =, comment.getImgList (); 如果(StringUtils.isEmpty (imgListStr)), { return 才能;零; } return JSON.parseArray (imgListStr, String.class);
修改后:
Comment Comment =, getById (commentId); if (Objects.isNull(评论),{ throw 才能;new  RuntimeException(“评论不存在或已被删除“); } String imgListStr =, comment.getImgList (); return StringUtils.isEmpty (imgListStr)), ? null 才能:JSON.parseArray (imgListStr, String.class);
<强>方式三:使用断言断言强>
在编写业务代码过程中,如果需要对某些特定的条件进行判断,且当条件不满足时需要抛出异常。对于这种场景,除了使用上面三目运算符的示例当中的如果方式,还可以通过使用Spring框架给我们提供的Assert 工具类进行。
其中常用的API有:
- <李>
isTrue(布尔表达式字符串消息):当表达式==false时,会抛出异常,异常的消息则为第二个入参;
李> <李>空白notNull (@Nullable对象对象、字符串消息):同上,当对象==null时,会抛出异常;
李> <李>空白notEmpty (@Nullable Collection<?比;收集、字符串消息):同上,当集合对象为零或者集合元素为空时,会抛出异常。
李> <李>.....
李>还有其他较多方法,可以直接看源码的解析,当然实际上isTrue()已经够用了,如果需要更加的语义化,可以使用对应的API。
修改前代码:
if (Objects.isNull(评论)),{ throw 才能;new  RuntimeException(“评论不存在或已被删除“); }
修改后代码:
, Assert.isTrue (Objects.nonNull(评论),“评论不存在或已被删除“); ,Assert.notNull(评论,“评论不存在或已被删除“);
目前维护工具方法只能抛出单一一种异常. lang。IllegalArgumentException,如果需要自定义所抛出的异常,则该方式不适用。
<强>方式四:使用可选强>
可选的是java8的新特性,相当于一个对象的容器,主要用于对象的null值校验,以及在进行校验后可链式地进行后续操作,如:抛出异常,零替换等,。
其中我个人比较常用的几个方法为:
- <李>
静态& lt; T>Optional
T orElse (T):,中可选的对象为null时,返回入参的对象。
李> <李>T orElseGet (Supplier<?T>延伸;其他):中可选的对象为null时,返回供应商提供的值;
李> <李>T orElseThrow (Supplier<?X>延伸;exceptionSupplier):,中可选的对象为null时,抛出供应商提供的自定义异常
李>代码示例:
Message message1 =, Optional.ofNullable (getById(消息id)) .orElseThrow才能((),→,new RuntimeException(“消息不存在!“)); Message message2 =, Optional.ofNullable (getById(消息id)) .orElse才能(new 消息()); Message message3 =, Optional.ofNullable (getById(消息id)) .orElseGet才能(信息::新);java中如何减少,如果其他的编码方式