LiveData观察者的Kotlin语法?
我有以下代码HomeActivity
要使用LiveData
。
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState)
// Show the launch splash screen.
//
this.setContentView(R.layout.activity_home)
this.viewModel = ViewModelProviders.of(this).get(HomeViewModel::class.java)
this.viewModel.getUser().observe(this, Observer { user: User? ->
});
}
尽管这似乎可行,但以下部分是什么意思?
Observer { user: User? ->}
这必须导致对象符合符合以下条件的Observer接口:
void onChanged (T t)https://developer.android.com/reference/android/arch/lifecycle/Observer.html
如何
Observer { user: User? ->}
结果对象与onChanged方法?
我不知道将接口名称放在lambda表达式前面意味着什么。
谢谢!
回答:
这称为SAM转换,该概念有助于与示例中的Java 单一抽象方法接口进行交互。
以下代码创建的实现Runnable
,其中单个抽象方法是run()
:
val runnable = Runnable { println("This runs in a runnable") }在文档中对此进行了描述:https : //kotlinlang.org/docs/reference/java-interop.html#sam-conversions
另外,但更冗长的是使用object:
val runnable2 = object : Runnable { override fun run() {
println("This runs in a runnable")
}
}
两者都是该实现的匿名实现的示例interface。当然也可以创建一个具体的子类,然后实例化它。
class MyRunnable : Runnable { override fun run() {
println("This runs in a runnable")
}
}
val runnable3 = MyRunnable()
以上是 LiveData观察者的Kotlin语法? 的全部内容, 来源链接: utcz.com/qa/427844.html