kotlin - 我可以省略在 Kotlin 中不使用的接口(interface)方法吗?

如果我只对 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 不实现 Iterable

properties - 将静态变量从 Java 转换为 Kotlin

hibernate - 如何使用 JpaRepository 进行批量(多行)插入?

kotlin - 如何抑制未经检查的强制转换警告?

kotlin - 如果事件是用 Kotlin 编写的,则按钮 onClick 属性为无

java - 如何使用 Maven 编译 Java+Kotlin 项目?

android - Kotlin - 如何在 "lateinit"和 "nullable varia

java - 为什么可以在 Kotlin 的类之外编写函数?