Pull to refresh

Comments 7

Мне кажется, что самое главное отличие — это Reified Generics в котлине, которых вообще нет в джаве.
Жаль только, что это всё-равно хак (реализовано только для inline методов). Это всё JVM и обратная совместимость виноваты. Когда приходишь из .NET мира, иногда чувствуется отсутствие нормальных дженериков.

extends — это верхняя граница, а super — нижняя, у вас же наоборот. Легко представить, почему так: ? extends Something означает какой-то тип, наследующий Something, т.е. находящийся ниже по дереву наследования классов, следовательно, Something — это его верхняя граница. Аналогично с super: ? super Something это какой-то тип, являющийся супертипом Something, т.е. находящийся выше по дереву наследования классов, следовательно, Something — это его нижняя граница.

Хотели как лучше, а получилось все равно сложно и непонятно.

В оф. документации к kotlin понятнее?)
К сожалению, единственный более менее доходчивый способ: самому взять и поэксперементировать. Когда читаешь, это не ложится. А лучше всего, если попытаться что-то реализовать на сложных дженериках — сразу становится видна вся печальная картина.
Sign up to leave a comment.