- ?.
//kotlin:
a?.foo()
//相当于java:
if(a!=null){
a.foo();
}
- !!.
//kotlin:
a!!.foo()
//相当于java:
if(a!=null){
a.foo();
}else{
throw new KotlinNullPointException();
}
时间宝贵的同学可以不要看下面的了(` _ `)
- 再来说下"!!"
值得一提的是,当我们直接调用一个可空变量的某方法或某成员变量时:
直接调用,报错提示
//(Kotlin)
a!!.foo()
//等于(Kotlin):
a!!
a.foo()
//相当于(Java):
assert a!=null;
a.foo();
//也就相当于(Java):
if(a == null){
throw new NullPointException();
}
a.foo();
进而有上面第2点结论。