【问题标题】:Nested Interface alternative in Kotlin [closed]Kotlin 中的嵌套接口替代方案 [关闭]
【发布时间】:2018-06-04 12:03:33
【问题描述】:

好的,我有一个接口,其中的接口很少,代码在 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,我该如何解决这个问题?

【问题讨论】:

  • 这个问题与注释有关 (@interface)
  • 请在下次发布问题之前确保问题确实存在。

标签: android kotlin


【解决方案1】:

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

interface Outer {
    interface Inner
}

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      • 2020-08-18
      • 2018-08-21
      • 2021-05-25
      相关资源
      最近更新 更多