Android问号后的变量

los*_*tie -1 kotlin

有时我会看到类似somevariable.value?.add()问号的目的是什么?(抱歉,在发布时,我不知道这是Kotlin,我以为是Java)

Com*_*are 7

Kotlin将其null视为不仅仅是空指针异常的来源。

在您的代码段中,somevariable.value是“可为null的类型”,例如MutableList?Axolotl?。一个MutableList不能是null,但是一个MutableList?可能是null

通常,要在对象上调用函数,请使用.

一种用于对可为空类型的变量,参数或属性调用函数的选项是使用?.。然后,将发生以下两种情况之一:

  • 如果值为null,则将忽略您的函数调用,它null是结果
  • 如果该值不是null,则会正常进行函数调用

因此,在您的情况下:

  • 如果somevariable.valuenulladd()则跳过该呼叫

  • 如果somevariable.value不是null,该add()呼叫在做什么somevariable.value