- 在代碼中括丁,開發(fā)者需要經(jīng)常檢查引用對象是否為空值(null)湃缎,否則在對象為空值時調用它的方法時會導致異常或崩潰辛慰。因此在代碼中會經(jīng)常出現(xiàn)如下形式的代碼
if (對象 == null){ ... }
這種操作單調乏味,在 Java 中也不可避免干像。舉個栗子:
public class SafeNullJava {
public static void main(String[] args) {
SafeNullJava s = new SafeNullJava();
s.foo("abc");
s.foo(null);
}
private void foo(String str) {
if (null != str) {
System.out.println(str.toUpperCase());
}
}
}
- 在 Groovy 中帅腌,可以使用安全導航操作符(?.)來避免上述的操作,具體代碼如下:
def foo(str){
// if(null != str){
// str.reverse()
// }
str?.reverse()
}
println foo("aabb")
println foo(null)
打印結果:
bbaa
null
使用 ?. 在空引用上調用其的方法時麻汰,結果是返回了一個 null速客,而沒有拋出空指針異常。