剛接觸java的c/c++程序員
聽說java奉行一切皆對象
一定以為空指針的難言之隱從此一洗了之
許多年以后還是深深疑惑
空如果即是色茴肥,也算對象
為何還會奔潰还最?
空指針問題其實是程序語言自帶的坑
要千千萬萬程序員去填
而且不設(shè)置任何警示標(biāo)志
c和java的江湖一直如此
Kotlin來了
世界有點不太一樣
當(dāng)沿用老的方式聲明空變量行不通了
var output : String
output = null
Kotlin編譯器就檢測出來報編譯錯誤
變量聲明默認(rèn)都是不可以為空
可以為空的變量需要在聲明時加問號
var output : String? = null
println(output.length())
一旦變量帶上問號聲明為可以為空
Kotlin編譯器就可以明確檢查那些還是空就被訪問的語句(如上面的println一行)
爆出編譯錯誤而不用等到運行時才崩潰
這是Kotlin號稱的Safe - 安全墓阀。
關(guān)于Safe - 安全特性在動態(tài)類型檢查轉(zhuǎn)換
在Java的代碼
if obj instance of String
? ?println(((String)obj).length);
一直覺得已經(jīng)明確判斷是類型String了
后面還要強(qiáng)制轉(zhuǎn)換后才能訪問還類型成員
代碼看起來很傻很2
Kotlin來了
if obj is String
? ?println(obj.length)
這編譯器是我認(rèn)為對類型安全具備了最起碼的智能.在她的世界里,空就是空拓轻,色就是色斯撮,空色是空色,色空是色空悦即,清清白白吮成,干干凈凈。