空安全:安全调用和 Elvis 操作符
上一节里我们讲到,对于非空类型变量,我们可以直接调用它的属性和方法而无须担心 NPE,那对于可空类型的变量,我们该怎样 安全地 调用它的属性和方法呢?Kotlin 的解决办法是使用 ?. 安全调用符:
1. 安全调用符 ?.
我们首先看一段 Java 代码:
public void printLengthOfString(String s) {
if (s != null)
System.out.println(s.length());
System.out.println("null");
}
我们检查传入的字符串是否是 null,如果是 null 则打印 "null",如果不是则打印字符串的长度。
这种写法在 Java 中再常见不过了,对于每个传入的引用类型参数,我们都需要考虑它会不会是 null,即使是简单地调用参数,也要用 if - else 语句进行 null 检查。
这个函数,我们用 Kotlin 可以这样写:
// 安全调用属性