В Котлин, учитывая некоторый класс:Котлин: суперкласса не доступен из признака
public open class A {
open fun sayHi() = "hi"
}
И черта T, которая требует подклассы для расширения A:
public trait T : A {
override fun sayHi() = super.sayHi() + " John"
}
Можно было бы ожидать T.sayHi
быть в состоянии для вызова super.sayHi()
или более явным super<A>.sayHi()
, так как вся информация о типе есть, но вместо этого она дает Superclass is not accessible from trait
.
Вопрос:
[Как] я могу переопределить некоторые метод из признака?
Примечания:
Конечно, без перекрывая я просто не мог сделать:
public trait T : A {
fun another() = sayHi() + " John"
}
Но я хочу, чтобы моя черта, чтобы иметь возможность «перехватывают/быть в середине».
Мне пришлось использовать некоторый делегат, чтобы добиться аналогичного поведения, но я хотел бы знать, можно ли это сделать с помощью черт.
Функция «требуется класс признака» является неоспоримым устаревшим и в конечном итоге будут удалены из Котлин. Взгляните на http://blog.jetbrains.com/kotlin/2015/04/upcoming-changes-and-more/ –
, спасибо за обновление. Слишком плохо, я действительно использовал эту функцию u__u Мне очень полезно явно заявить о требованиях, которые имеет моя черта. – Logain