Articles of ковариантность

Может ли ковариантный параметр типа находиться во входной позиции в конструкторе?

В этом ответе Майкл предполагает, что параметр родового типа должен быть со-вариантом, чтобы создать пустой узел. Я получаю, что параметр generic type находится во всех выходных позициях, поскольку все свойства Tree<T> и его подтипы доступны только для чтения ( val ). Но он имеет параметр типа во входной позиции конструктора. Я думал, что этот код […]

Зачем использовать разницу между объявлением и сайтом

Это не конкретный вопрос Котлин, но я хотел бы лучше понять, почему я буду использовать дисперсию объявления-сайта (ковариантную и контравариантную). Я понимаю, как их использовать, я просто не вижу большой пользы или в этом случае я должен выбрать один за другим и почему я не хочу постоянно использовать разницу в использовании сайта.

Котлин: дженерики и дисперсия

Я хочу создать функцию расширения на Throwable которая, учитывая KClass , рекурсивно ищет корневую причину, которая соответствует аргументу. Ниже приводится одна попытка, которая работает: fun <T : Throwable> Throwable.getCauseIfAssignableFrom(e: KClass<T>): Throwable? = when { this::class.java.isAssignableFrom(e.java) -> this nonNull(this.cause) -> this.cause?.getCauseIfAssignableFrom(e) else -> null } Это тоже работает: fun Throwable.getCauseIfAssignableFrom(e: KClass<out Throwable>): Throwable? = when { […]

Почему var с частным сеттером является инвариантной позицией?

(Я использую kotlin 1.1.2-2) Я обнаружил, что существует два способа определения свойства, которое является переменным, но не может быть назначено через = . var с частным сеттером val с частной переменной Я также обнаружил, что у них другое поведение. Когда T объявлено, var типа T с частным сеттером не может быть определен, в то время […]

Intereting Posts
метод входа не вызывает использование привязки данных в android Внедрение TypeAdapterFactory с помощью TypeAdapter в Котлине Kotliquery не закрывает связи postgresql Ошибка компиляции Котлина: ни одна из следующих функций не может быть вызвана с предоставленными аргументами Тип общего типа Kotlin, Ошибка ввода типа Перехватить каждый элемент представления завышенным? Сканер Bluetooth Low Energy работает нормально, но не находит никаких устройств JVM – открыть веб-страницу и запустить код Javascript Котлин выполняет необязательное действие Что означает код this @ MainActivity? В чем разница между этими флагов компилятора Kotlin? Почему Kotlin необходимо связать свою рабочую среду после компиляции? Могу ли я отложить привязку вида в адаптере с помощью расширения Kotlin Android Android – Как запустить пользовательскую функцию DialogPreference из MainActivity? Где сохранять статусные файлы?