#kotlin #syntax
#котлин #синтаксис #kotlin
Вопрос:
У меня есть интерфейс 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 что-то, чтобы справиться с этой ситуацией?
Ответ №1:
Предполагая, что ваш интерфейс выглядит следующим образом:
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
}
}