在Kotlin中,在类型后面的单个感叹号“!”是什么意思?

khbbv19g  于 2022-11-16  发布在  Kotlin
关注(0)|答案(1)|浏览(673)

我正在学习使用Kotlin开发Android应用。我以前使用Java开发。在Android Studio中编码时,我可以看到Lambda、方法等中使用的返回类型、参数等被编写为View!。
我知道Kotlin中类型后面的?表示可空类型,但!是什么意思呢?
例如:

val item = mySpinner.selectedItem

返回类型是Any!!是什么意思?它与可空类型Any?相同吗?谢谢。

qni6mghb

qni6mghb1#

它是一个平台类型,表示Kotlin不确定它是null还是not null,就像说“可能”。
平台类型不能在程序中显式地提及,因此在语言中没有它们的语法。然而,编译器和IDE有时需要显示它们(例如,在错误消息或参数信息中),因此有一个助记符表示它们:

  • T!的意思是“T还是T?,"
  • (可变)集合!表示“T的Java集合可以是可变的或不可变的,可以是可空的或不可空的,”
  • 数组〈(out)T〉!表示“T(或T的子类型)的Java数组,可空或不可空”

因为它可以是nullnot null,所以如何对待它取决于你。
也检查此另一个post

相关问题