Articles of обобщений

Что такое kotlin, равное полю аннотации Java с ограниченным типом подстановочного знака?

Скажем, у меня есть аннотация в Java: public @interface Foo { Class<? extends Bar> value(); } public interface Bar {} Как мне перевести Foo в котлин? Верно ли, что я мог только вернуться к Java в такой ситуации?

Как написать общий метод расширения в Котлине?

В проекте, над которым я работаю, я обнаружил, что написал несколько методов расширения для некоторых типов, чтобы вернуть значение по умолчанию, если опция имеет значение null. Например, у меня может быть Boolean? объект, и я хочу использовать его в условном выражении по умолчанию false, поэтому я бы написал: if (myOptional?.default(false)) { .. } Я написал […]

Kotlin: возможно ли иметь постоянное свойство, зависящее от типичного типа реализации?

У меня есть следующий базовый класс abstrac abstract class Vec2t<T : Number>(open var x: T, open var y: T) { companion object { val SIZE = 2 * when (/** T instance type */) { is Byte, is Ubyte -> 1 is Short, is Ushort -> 2 is Int, is Uint, is Float -> 4 […]

Kotlin: общая коллекция в общий массив

Как получить общий массив из общей коллекции ? Я сделал следующее: val genericArray: Array<E> = (genericCollection as java.util.Collection<E>).toArray() as Array<E> Правильно ли это, или есть более элегантное решение? Ждем вашей помощи! РЕДАКТИРОВАТЬ Я закончил тем, что написал это вспомогательное расширение: fun <E> Collection<E>.toUntypedArray(): Array<E> { @Suppress("UNCHECKED_CAST") return arrayOf(size, this) as Array<E> } У кого-нибудь из […]

У меня есть два метода расширения Kotlin для одного и того же класса, но с разными генерическими сигнатурами и компилятор жалуется

Я пишу две функции расширения для одного и того же класса: class Something<T:Any> { … } Они похожи: fun Something<Int>.toJson(): String = … fun Something<Double>.toJson(): String = … И приводит к ошибке компилятора: Kotlin: конфликт объявления платформы: следующие объявления имеют одну и ту же подпись JVM Как я могу создать две функции расширения с различной […]