Потому что Kotlin использует шаблоны, а не шаблоны. Он имеет только один класс EndPoint
вместо создания нового для каждого T
, как в C ++.
И в JVM этот класс должен расширять ровно один суперкласс (возможно, Object
) и определенный набор интерфейсов (возможно, ни одного). То есть вы не можете иметь EndPoint<BlueInterface>
орудие BlueInterface
, но не RedInterface
и наоборот для EndPoint<RedInterface>
.
Согласно MSDN, он также не работает в C # (я считаю, что CLR предъявляет те же требования при определении классов):
C # не позволяет использовать параметр типа в качестве базового класса для универсального типа.
Это C ++, который здесь является исключением.