首页 > 解决方案 > Kotlin Observer lambda 语法?

问题描述

我现在正在学习来自 .NET C# 的用于 Android 开发的 Kotlin。我对 Kotlin 语法有疑问,例如:

 val nameObserver = Observer<String> { newName ->

            nameTextView.text = newName
  }

此代码取自 Android LiveData 文档。我认为 Observer 是一个新对象,没有 new 关键字,因为它在 Kotlin 中不存在。我的问题是 lambda 部分。这是在对象中初始化的属性吗?我如何知道初始化了哪些属性而不命名它们,它们是否按顺序排列?在这种情况下应该是什么 newName , nameObserver 值或其他什么?

标签: androidkotlin

解决方案


您发布的片段称为SAM 转换。您Observer<String>通过将其指定为 lambda 表达式来创建接口类型的对象。

在您的特定情况下newName是传递给onChanged 方法的参数,并且看到代码将其定义为Observer<String>,是类型String


推荐阅读