Kotlin中的嵌套接口替代方案

时间:2017-12-21 19:05:29

标签: android kotlin

好吧,我有一个接口,其中有很少的接口,代码在Kotlin

中看起来像这样
interface IStreamRepository : IBaseRepository {

interface OnAddStreamCallback {
    fun onSuccess()
    fun onError(message: String)
}

interface OnGetAllStreamsCallback {
    fun onSuccess(streams: ArrayList<Stream>)
    fun onError(message: String)
}

interface OnGetStreamByNameCallback {
    fun onSuccess(stream: Stream)
    fun onError(message: String)
}

interface OnDeleteStreamCallback {
    fun onSuccess()
    fun onError(message: String)
}
}

当我尝试做的时候

getAllStreamsCallBack = IStreamRepository.OnGetAllStreamsCallback() {
    //and override methods in OnGetAllStreamsCallback interface 
}

编译器抛出以下错误OnGetAllStreamsCallback does not have constructors,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

链接的问题与嵌套的注释类有关。 您可以毫无问题地嵌套接口:

interface Outer {
    interface Inner
}

fun main(args: Array<String>) {
    val o = object : Outer {}
    val i = object : Outer.Inner {}
}

答案 1 :(得分:2)

  

当我尝试执行getAllStreamsCallBack = IStreamRepository.OnGetAllStreamsCallback(){并覆盖OnGetAllStreamsCallback接口中的方法时}编译器抛出以下错误OnGetAllStreamsCallback剂量没有构造函数

使用非嵌套接口会出现相同的错误。语法为getAllStreamsCallBack = object : IStreamRepository.OnGetAllStreamsCallback { ... }。如果是一个类,那么在名称后面需要(),对于你不需要的接口。