在Kotlin中调用函数findViewById后,尖括号语法意味着什么



Kotlin新手在此;

我正在努力完成一个教程,https://developer.android.com/guide/topics/ui/floating-action-button

我在一个基本活动示例代码中看到了一个findViewById<FloatingActionButton>(R.id.fab),其中的<FloatingActionButton>部分让我很反感

findViewById<FloatingActionButton>(R.id.fab).setOnClickListener { view ->
Snackbar.make(view, getString(R.string.MySnackBar), Snackbar.LENGTH_LONG)
.setAction("Action", null).show()

我很困惑,因为在其他示例代码中,我看到val rollButton: Button = findViewById(R.id.roll_button)

第一个findViewById<FloatingActionButton>是一个接口吗?如果是,为什么它需要一个接口,而第二个则通过按原样传递按钮来工作?

我是误解了语法,还是遗漏了一个概念?

我确信我错过了这个谜题的一部分,但没有看到。

先发制人地感谢你的任何帮助或医生,你可以推荐我来解释它!

findViewById()需要被告知预期的视图类型。您可以通过以下两种方式之一实现:

  • 通过显式指定变量的类型
val button: Button = findViewById(R.id.button)
  • 通过向findViewById()传递类型参数
val button = findViewById<Button>(R.id.button)

你当然可以把两者结合起来,但只需要一个。

就我个人而言,我更喜欢第一种选择,因为它避免了平台类型的推断。

最新更新