空安全:?和!!

空安全

当我们使用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"

你可能感兴趣的:(空安全:?和!!)