Kotlin:使用扩展函数扩展接口为何无法生效?
问题原因分析
你的代码之所以没打印出"Hello",核心原因是printInterface函数仅仅接收了MyInterface.() -> Unit类型的lambda参数,但没有在函数体内调用这个lambda。
具体细节:
- 你传递给
printInterface的{ printExtension() }是一段针对MyInterface的扩展逻辑,但这段逻辑必须被主动触发才会执行。 - 当前
printInterface是空实现,没有调用传入的content参数,导致lambda里的printExtension()代码完全没机会运行。
修复方式很直接,在printInterface内部调用传入的lambda即可:
fun printInterface(content: MyInterface.() -> Unit) { // 创建MyInterface的匿名实例,调用传入的lambda逻辑 object : MyInterface {}.content() }
修改后运行代码,就能正常打印出"Hello"了。
内容的提问来源于stack exchange,提问作者steeveKA1
相关产品推荐
相关产品推荐

