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

Как реализовать универсальную функцию, которая создает пустой общий массив 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 res } @Test fun test1D() { val a : Array<Int> = arrayOf(0) val b : Array<Int> = make1D(a) assertEquals(0, b.size) } inline fun <reified T> make2D(mask: Array<Array<T>>) : Array<Array<T>> { val res : Array<Array<T>> = arrayOf() // I expect T to be equal to Int when calling from test below, // and res to have Integer[][] type; // however it has Object[][] type instead return res } @Test fun test2D() { val a : Array<Array<Int>> = arrayOf(arrayOf(0)) val b : Array<Array<Int>> = make2D(a) assertEquals(0, b.size) } 

    Я думаю, что вы слишком глубоки для параметра reified. Возможно, это ошибка, и проблема с YouTrack поможет выяснить. Этот код работает, когда вы позволяете T быть всем внутренним массивом:

     inline fun <reified T> make2D(mask: Array<T>): Array<T> { val res: Array<T> = arrayOf<T>() return res } @Test fun test2D() { val a: Array<Array<Int>> = arrayOf(arrayOf(0)) val b: Array<Array<Int>> = make2D(a) assertEquals(0, b.size) } 

    После того, как вы создадите проблему с YouTrack, отправьте номер проблемы здесь для отслеживания.

    Intereting Posts
    Как передать класс класса kotlin или экземпляр класса kotlin в качестве аргументов Nullability и LiveData с Kotlin Аргумент Generic Type не находится в пределах границ Glide onLoadFailed () триггер после загрузки всего изображения после прокрутки вниз, а затем прокрутки вверх Как сделать сумму элементов для нескольких списков в kotlin JNI: чтение и запись в прямом буфере Retrofit2 Добавить дополнительную строку в объект Body Как я могу написать идиоматический код kotlin, который перебирает подпроцесс и обрабатывает его вывод? Как установить заголовок NavigationView с помощью Anko DSL? Внутренние классы Kotlin в Java видимы публично kotlin неразрешенная ссылка KDoc, но IntelliJ не любит импорт, который его исправляет Ленивая инициализация свойства класса Kotlin не будет компилироваться Выполнение инициализатора свойств kotlin в тестах JUnit У Kotlin есть array.indexOf, но я не могу понять, как это сделать array.indexOfBy {lambda} Использование свойства NewApi по-прежнему вызывает предупреждения lint