Фильтр - это интерфейс, который расширяет (HttpHandler) -> HttpHandler
, поэтому он является его подклассом, а не суперклассом.
Может быть, легче увидеть, если у вас нет функционального синтаксиса.
open class Animal
class Kitten: Animal()
fun doSomething(): Kitten {
// You cannot return an explicit Animal here, even though the Kitten implementation
// has not defined any unique members or overridden anything.
}
Ваша лямбда в буквальном смысле является (HttpHandler) -> HttpHandler
и не может считаться фильтром, а не произвольным Животное может быть брошено на котенка. Неважно, что мы не добавили какие-либо функции к котенку или что-то переопределили. Это просто объявление означает, что это отдельный подтип, и компилятор никогда не примет иное.