Articles of массивы массивов

Kotlin и generics, реализующие абстрактный общий класс с общим массивом

У меня есть следующий абстрактный класс abstract class Vec2t<T : Number>(open var x: T, open var y: T) осуществляется data class Vec2(override var x: Float, override var y: Float) : Vec2t<Float>(x, y) Пока все работает отлично Теперь, я хотел бы сделать что-то подобное для матриц, это в настоящий момент мой абстрактный класс abstract class Mat2t<T […]

Общая функция с общим двумерным массивом

Как реализовать универсальную функцию, которая создает пустой общий массив 2D? В следующем примере кода создается пустой массив 1D и имеет ожидаемый тип. Однако, когда я вызываю test2D, я получаю сообщение об ошибке: java.lang.ClassCastException: [[Ljava.lang.Object; cannot be cast to [[Ljava.lang.Integer; inline fun <reified T> make1D(mask: Array<T>) : Array<T> { val res : Array<T> = arrayOf() return […]

Типы типов Kotlin и литералы классов

Я пытаюсь десериализовать массив объектов JSON с помощью GSON. Таким образом, простой вызов: val arrayOfFoo = gson.fromJson(source, Array<Foo<*>>::class.java>) должен сделать трюк. Но стирание стилей говорит нам, что Foo <*> не существует во время выполнения, поэтому появляется сообщение «Только литералы класса разрешены в левой части литерала класса». Итак, решение должно быть: val arrayOfFoo = gson.fromJson<Array<Foo<*>>>(source, Array::class.java) […]

Котлин: массив дженериков

Я пишу B-дерево, которое может иметь много ключей в одном узле, и я столкнулся с проблемой. Когда я создаю массив Ints, все работает нормально: class Node<K: Comparable<K>> (val t: Int) { val keys: Array<Int?> = Array<Int?> (t*2-1, {null}) } Но я хочу создать массив Generics Ks : class Node<K: Comparable<K>> (val t: Int) { val […]

Kotlin NDArray с конструктором лямбда с общим типом возврата

Я пытаюсь создать очень простой общий класс NDArray в Kotlin, который принимает лямбда-выражение как функцию init. class NDArray<T>(i: Int, j: Int, f: (Int) -> T) { val values: Array<T> = Array(i * j, f) } Типичное использование: fun main(args: Array<String>){ val m = NDArray(4, 4, ::zero) } fun zero(i: Int) = 0.0 Моя проблема заключается […]

Создайте общий 2D-массив в Котлине

Предположим, что у меня есть общий класс, и мне нужен 2D-массив общего типа T Если я попробую следующее class Matrix<T>(width: Int, height: Int) { val data: Array<Array<T>> = Array(width, arrayOfNulls<T>(height)) } компилятор выдает сообщение об ошибке « Невозможно использовать« T »в качестве параметра типа reified. Вместо этого используйте класс. ».

Intereting Posts
Ошибка: не удалось разрешить версию для зависимости «org.jetbrains.kotlin: kotlin-stdlib-jre7: jar ' Как организовать несколько блоков сопрограммы и ожидания в тесте Kotlin Spek? Как объединить список в списке типа, в один неизменный список? Как инициализировать свойство массива аннотации в Котлине Запустите Kotlin REPL из контекста моего проекта Maven? Android Local VPN Service: не может получить ответ Знак доллара в строках Компоненты архитектуры Kotlin kapt и android Не удается получить доступ к EditText или другим компонентам пользовательского интерфейса с помощью Kotlin Объединение всех стандартных и пользовательских десериализаторов Джексона в универсальный десериализатор свойств Как определить члену делегата с нулевым значением в Котлине? Копирование документов KDoc с одного метода на другой Android Kotlin добавляет элементы в ListView из Spinner JavaRX: как вернуть кешированное значение немедленно и параллельно выполнить сетевой запрос Контекст null, внезапно получая NPE после перехода на API 27