实现通用接口时避免单元参数声明

问题描述 投票:0回答:1

我有一个接口Handler<T>与一个方法handle(item: T)和一些实现它的类:

class FooHandler : Handler<String>
class BarHandler : Handler<Int>
class BazHandler : Handler<Unit>

在最后一个,handle实现看起来像这样:

override fun handle(nothing: Unit) {
  //whatever
}

我发现它很难看。当kotlin类型为Unit时,允许避免参数声明会很棒,例如:

override fun handle() {
  //whatever
}

但到目前为止它还没有得到支持。 Kotlin有什么办法解决这种情况吗?

kotlin syntax
1个回答
2
投票

假设您的界面如下所示:

interface Handler<T> {
  fun handle(item: T)
}

你可以将它包装在另一个界面中,如下所示:

interface TypelessHandler : Handler<Unit> {
  fun handle()

  override fun handle(item: Unit) {
    handle()
  }
}

然后像这样使用它:

class FooHandler: TypelessHandler {
  override fun handle() {
    //whatever
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.