新型编程语言,大部分已经支持了可选性链,如(dart):
image.png
作用是当值不为空时,才一层层地取值,为空时,整个语句不继续执行。
java如果想写出同样逻辑的代码,就繁琐很多:
方式一:if判空
image.png
方式二:Optional
image.png
由于java确实没有这种语言糖,所以为了提升书写效率,可以写格式化小工具,将没有可选值链的代码,整理为有可选值链逻辑的代码,效果:
image.png
步骤1、写一个java工具类,目的保证是格式化之前不报红,整理后无需再引用
package com.immomo.jplive.show.room.util;
import com.immomo.mcf.util.StringUtils;
public class WdxUtils {
public static <T> void nullNext(T val, INotNull<T> doNotNull, INull doNull) {
if (null == val) {
if (null != doNull) {
doNull.doNull();
}
} else {
doNotNull.doNotNull(val);
}
}
public interface INotNull<T> {
void doNotNull(T val);
}
public interface INull {
void doNull();
}
}
步骤2、写一个文本格式化工具,我是用javascript写的,作成本地网页工具
核心逻辑:把取值代码分割,套入Optional拼回:
image.png