如果我只对 onSee
感兴趣而不关心其他事件怎么办?我至少可以省略没有返回值的方法吗?
interface EventHandler
{
fun onSee()
fun onHear()
fun onSmell()
fun onTouch()
fun onAwake()
fun onSleep()
}
fun addEventHandler(handler:EventHandler)
{
}
fun Main()
{
addEventHandler(object:EventHandler
{
override fun onSee()
{
print("I see.")
}
})
}
最佳答案
当然,这是可能的!你可以在扩展的时候实现一个接口(interface)方法,你所要做的就是在接口(interface)声明中为其他方法提供一个默认实现
interface EventHandler {
fun onSee()
fun onHear() { /* default implementation */ }
fun onSmell(){ /* default implementation */ }
fun onTouch(){ /* default implementation */ }
fun onAwake(){ /* default implementation */ }
fun onSleep(){ /* default implementation */ }
}
现在当你创建这个接口(interface)的实例时,你只需要为 onSee()
方法提供一个强制实现,其余是可选的
如果您不是原界面的作者 您可以扩展原始接口(interface)并为您想要的方法提供默认实现
interface OnSeeEventHandler: EventHandler {
override fun onHear() { /* default implementation */ }
override fun onSmell(){ /* default implementation */ }
override fun onTouch(){ /* default implementation */ }
override fun onAwake(){ /* default implementation */ }
override fun onSleep(){ /* default implementation */ }
}
并使用OnSeeEventHandler
只提供onSee
方法实现
https://stackoverflow.com/questions/47362581/
相关文章:
android - ArrayAdapter 使用 Kotlin android
java - Kotlin - 为非数据类生成 toString()
types - 为什么 Kotlin Array
properties - 将静态变量从 Java 转换为 Kotlin
hibernate - 如何使用 JpaRepository 进行批量(多行)插入?
kotlin - 如果事件是用 Kotlin 编写的,则按钮 onClick 属性为无
java - 如何使用 Maven 编译 Java+Kotlin 项目?