Kotlin来了 2 - 空即是色?

刚接触java的c/c++程序员

听说java奉行一切皆对象

一定以为空指针的难言之隐从此一洗了之

许多年以后还是深深疑惑

空如果即是色,也算对象

为何还会奔溃?

空指针问题其实是程序语言自带的坑

要千千万万程序员去填

而且不设置任何警示标志

c和java的江湖一直如此

Kotlin来了

世界有点不太一样

当沿用老的方式声明空变量行不通了

var output : String
output = null

Kotlin编译器就检测出来报编译错误

变量声明默认都是不可以为空

可以为空的变量需要在声明时加问号

var output : String? = null
println(output.length())

一旦变量带上问号声明为可以为空

Kotlin编译器就可以明确检查那些还是空就被访问的语句(如上面的println一行)

爆出编译错误而不用等到运行时才崩溃

这是Kotlin号称的Safe - 安全。

关于Safe - 安全特性在动态类型检查转换

在Java的代码

if obj instance of String
   println(((String)obj).length);

一直觉得已经明确判断是类型String了

后面还要强制转换后才能访问还类型成员

代码看起来很傻很2

Kotlin来了

if obj is String
   println(obj.length)

这编译器是我认为对类型安全具备了最起码的智能.在她的世界里,空就是空,色就是色,空色是空色,色空是色空,清清白白,干干净净。

你可能感兴趣的:(Kotlin来了 2 - 空即是色?)