刚接触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)
这编译器是我认为对类型安全具备了最起码的智能.在她的世界里,空就是空,色就是色,空色是空色,色空是色空,清清白白,干干净净。