Size: a a a

2020 June 20

AN

Alexander Nozik in Kotlin JVM
Но! В котлин оно гораздо понятнее, чем в Java, если использовать declaration-site-variance. Там все довольно прозрачно
источник

BP

Bogdan Panchenko in Kotlin JVM
Alexander Nozik
Так и запишем, сам разработчик ногу сломит
Я себе это сохранил
источник

AN

Alexander Nozik in Kotlin JVM
В общем, слава Идее.
источник

IO

Iaroslav Orlov in Kotlin JVM
Alexander Nozik
Но это не спасает, когда начинаются рекурсивные дженерики
а с ними что не так? если б не они, то суперкласс не мог бы работать с типом наследника
источник

AN

Alexander Nozik in Kotlin JVM
Iaroslav Orlov
а с ними что не так? если б не они, то суперкласс не мог бы работать с типом наследника
Все с ними хорошо. Просто их в принципе нельзя сделать понятными. Еще никому не удалось еще.
источник

IO

Iaroslav Orlov in Kotlin JVM
по-хорошему можно было бы добавить какое-то ключевое слово, для дженерика, который так объявляется, а затем передавать значение его неявно.
abstract class Enum<child T>
class MyEnum : Enum<>
источник

IO

Iaroslav Orlov in Kotlin JVM
но эта криво.
источник

BP

Bogdan Panchenko in Kotlin JVM
Очень криво, да ещё и с джавой путает
источник

IO

Iaroslav Orlov in Kotlin JVM
да, все неявное зло
источник

IO

Iaroslav Orlov in Kotlin JVM
Bogdan Panchenko
Очень криво, да ещё и с джавой путает
diamond?
источник

AN

Alexander Nozik in Kotlin JVM
Iaroslav Orlov
по-хорошему можно было бы добавить какое-то ключевое слово, для дженерика, который так объявляется, а затем передавать значение его неявно.
abstract class Enum<child T>
class MyEnum : Enum<>
Есть же UnsafeGenerics или как его
источник

BP

Bogdan Panchenko in Kotlin JVM
Да
источник

BV

Boris Vanin in Kotlin JVM
В котлине, кстати больше мест, для которых рекурсивные дженерики терминальны 😬
источник

BV

Boris Vanin in Kotlin JVM
В джаве обычно как-то можно обойти, а котлине бывает, что вот совсем никак
источник

AN

Alexander Nozik in Kotlin JVM
Boris Vanin
В котлине, кстати больше мест, для которых рекурсивные дженерики терминальны 😬
А расшифровать? Вообще в котлин рекурсивные дженерики сильно лучше, чем в жаве выглядят за счет declaration site variance. Но без Self-типов все равно больно.
источник

BP

Bogdan Panchenko in Kotlin JVM
Boris Vanin
В джаве обычно как-то можно обойти, а котлине бывает, что вот совсем никак
Даже с unsafe ?
источник

BV

Boris Vanin in Kotlin JVM
Я о том, что бывает такое, что объявить тип можно, а использовать нельзя
источник

BV

Boris Vanin in Kotlin JVM
Bogdan Panchenko
Даже с unsafe ?
Возможно я что-то пропустил
источник

BV

Boris Vanin in Kotlin JVM
Что значит ансейф в этом контексте?
источник

AN

Alexander Nozik in Kotlin JVM
Boris Vanin
Что значит ансейф в этом контексте?
UnsafeVariance. Только я не понял, зачем он
источник