Ну т.е как с параметрами мы можем например указать нижнюю границу, но проставить дефолт любого из наследников
fun foo(a: Number = 1L); foo(0.2)
Кейс родился случайно, при работе с спринговыми евентами, которые в большинстве своем наследуются от ApplicationEvent, и для подписки можно реализовать ApplicationListener<T: ApplicationEvent>, но мне например хочется сделать от него наследника именно с "дефолтным" дженериком, типа если я не указал тебе явно дженерик - бери вот такой
SomeHandler<T: ApplicationEvent = ContextRefreshedEvent>: ApplicationListener<T>
Что-то типа такого, а когда явно мне надо в реализации его сделать другим:
JustWhenReadyHandler: SomeHandler<ApplicationReadyEvent>
Так в TypeScript есть, сделать можно, фича имхо крутая и полезная.
Обсуждают сегодня