Kotlin-用两个不同的单方法接口替换单个的双方法接口

时间:2018-06-25 10:28:35

标签: android kotlin kotlin-extension

首先,我想澄清一下我的问题是针对个人代码风格的偏好。

假设我有一个以接口为参数的方法,并且该接口中有两个方法。

在kotlin中,匿名实现该接口,我们会遇到类似的情况

client.execute(object : Callback() {
    override fun onResponse(response: Response) {/*...*/}
    override fun onError(error: Error) {/*...*/}
})

我想做的是为client对象创建扩展,该扩展将采用两个不同的接口,例如

interface ClientResponse{fun onResponse(response: Response)}
interface ClientError{fun onError(error: Error)}

,然后新的execute方法看起来像

client.executeCustom(
    {response -> /*...*/},
    {error -> /*...*/}
})

这种SAM解决方案。

有可能吗?

1 个答案:

答案 0 :(得分:2)

这应该是一个相当琐碎的扩展,您可以立即使用两个lambda参数,然后在其中创建一个$("table#mytable tr").on("click", function(e) { // if e.target == "<a href=''>" element, Then "return;" // else -> do other stuff }); 实例,以将调用委托给这些lambda:

Callback

这样,您甚至不需要引入新的界面。