空安全设计的操作符及描述,如下表:

操作符描述
? 可空操作符,声明可空类型,避免抛出NPE;
?.安全调用操作符,为空返回null,避免抛出NPE;
?.let{}?. let一起使用,用于遍历集合时,则忽略null值,只对非空值执行操作;
?:Elvis操作符, val t = b?.length ?: -1,如果 ?: 左侧表达式(b?.length)非空,elvis 操作符就返回其左侧表达式,否则返回右侧表达式(-1);
!!非空断言运算符,将任何值转换为非空类型,若该值为空则抛出NPE;
as?尝试转换成指定类型,如果尝试转换不成功则返回null;
filterNotNull过滤一个可空类型元素集合中的非空元素。