空安全
当我们使用Java开发的时候,我们的代码大多是防御性的。如果我们不想遇到NullPointerException,我们就需要在使用它之前不停地去判断它是否为null。Kotlin,如很多现代的语言,是空安全的,因为我们需要通过一个安全调用操作符(写做?)来明确地指定一个对象是否能为空。
我们可以像这样去写:
//这里不能通过编译. Artist 不能是null
varnotNullArtist:Artist=null
//Artist 可以是 nullvarartist:Artist?=null
//无法编译, artist可能是null,我们需要进行处理artist.print()
//只要在artist != null时才会打印artist?.print()//智能转换. 如果我们在之前进行了空检查,则不需要使用安全调用操作符调用
if(artist!=null) { artist.print()}
//只有在确保artist不是null的情况下才能这么调用,否则它会抛出异常artist!!.print()
//使用Elvis操作符来给定一个在是null的情况下的替代值valname=artist?.name ?:"empty"
网友评论