Android 在Kotlin中调用函数findViewById后,尖括号语法是什么意思

Android 在Kotlin中调用函数findViewById后,尖括号语法是什么意思,android,kotlin,interface,findviewbyid,Android,Kotlin,Interface,Findviewbyid,科特林是这里的新手 我正在努力完成一个教程 我在a中看到了基本活动示例代码afindViewById(R.id.fab),其中部分让我感到厌烦 findViewById<FloatingActionButton>(R.id.fab).setOnClickListener { view -> Snackbar.make(view, getString(R.string.MySnackBar), Snackbar.LENGTH_LONG)

科特林是这里的新手

我正在努力完成一个教程

我在a中看到了基本活动示例代码a
findViewById(R.id.fab)
,其中
部分让我感到厌烦

 findViewById<FloatingActionButton>(R.id.fab).setOnClickListener { view ->
            Snackbar.make(view, getString(R.string.MySnackBar), Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show()
findviewbyd(R.id.fab).setOnClickListener{view->
Snackbar.make(视图,getString(R.string.mysnakbar),Snackbar.LENGTH\u LONG)
.setAction(“Action”,null).show()
我很困惑,因为在其他示例代码中,我看到
val rollButton:Button=findviewbyd(R.id.roll\u按钮)

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

我是否误解了语法,或者遗漏了一个概念

我肯定我错过了这个谜题的一部分,但我看不到

首先感谢您向我提供的任何帮助或文档!需要告知findViewById()所需的视图类型。您可以通过以下两种方式之一执行此操作:

  • 通过显式指定变量的类型
  • 通过将类型参数传递给
    findViewById()
val-button=findviewbyd(R.id.button)
你当然可以把两者结合起来,但只需要一个


就我个人而言,我更喜欢第一个选项,因为它避免了对的推断。

谢谢你,先生,这是一个很好的解释!这回答了我的问题,但很小的后续问题,为什么它需要定义它期望的输出,这不是函数声明/签名的一部分,它是在哪里生成的,而不是我调用它的地方吗?我想可能有一个更高级或更现代的编程概念我并不熟悉。再次感谢!函数声明如下:
public find findViewById(int id){
。重要的部分是
T
。在Java中,您总是在变量声明中提供这些信息(例如,
Button Button=findViewById(…)
),但在kotlin中,您有时依赖于类型推断,然后没有任何东西可以告诉编译器如何使用
T
。再次感谢!Mych感谢!阅读有关泛型函数和泛型的内容。
val button: Button = findViewById(R.id.button)
val button = findViewById<Button>(R.id.button)