Что такое эквивалент Kotlin Java String []?

Я вижу, что у Kotlin есть ByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArray, которые соответственно эквивалентны ByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArray byte[], short[], int[],char[], double[], float[] в Java.

Теперь мне интересно, есть ли StringArray эквивалентный Java String[]?

Ответ 1

Нет особого случая для String, потому что String является обычным ссылочным типом на JVM, в отличие от Java-примитивов (int, double ,...) - их хранение в ссылочном Array<T> требует бокса их на объекты типа Integer и Double. Цель специализированных массивов, таких как IntArray в Kotlin, заключается в том, чтобы хранить IntArray примитивы, избавляясь от накладных расходов на бокс и unboxing (так же, как Java int[] вместо Integer[]).

Вы можете использовать Array<String>Array<String?> Для nullables), что эквивалентно String[] в Java:

val stringsOrNulls = arrayOfNulls<String>(10) // returns Array<String?>
val someStrings = Array<String>(5) { "it = $it" }
val otherStrings = arrayOf("a", "b", "c")

См. Также: Массивы в языковой ссылке

Ответ 2

Эти типы существуют, так что вы можете создавать массивы примитивов, а не типы в штучной упаковке. Поскольку String не является примитивным в Java, вы можете просто использовать Array<String> в Kotlin как эквивалент Java String[].

Ответ 3

использовать arrayOf, arrayOfNulls, emptyArray

var colors_1: Array<String> = arrayOf("green", "red", "blue")
var colors_2: Array<String?> = arrayOfNulls(3)
var colors_3: Array<String> = emptyArray()

Ответ 4

Для Strings и других типов вы просто используете Array<*>. Причина, по которой IntArray и другие существуют, - это предотвращение автобоксинга.

Поэтому int[] относится к IntArray где Integer[] относится к Array<Int>.

Ответ 5

Этот пример отлично работает в Android

В kotlin вы можете использовать лямбда-выражение для этого. Определение конструктора массива Kotlin:

Array(size: Int, init: (Int) -> T)

Который оценивает:

skillsSummaryDetailLinesArray = Array(linesLen) {
        i: Int -> skillsSummaryDetailLines!!.getString(i)
}

Или же:

skillsSummaryDetailLinesArray = Array<String>(linesLen) {
        i: Int -> skillsSummaryDetailLines!!.getString(i)
}

В этом примере определение поля было:

private var skillsSummaryDetailLinesArray: Array<String>? = null

Надеюсь это поможет

Ответ 6

Вы также можете использовать:

val frases = arrayOf("texto01","texto02 ","anotherText","and ")

например.

Ответ 7

Чтобы создать пустой Array of Strings в Kotlin, вы должны использовать следующий синтаксис:

Первый подход:

val empty = arrayOf<String>()

Второй подход:

val empty = arrayOf("","","")

Третий подход:

val empty = Array<String?>(3) { null }

Четвертый подход:

val empty = arrayOfNulls<String>(3)

Пятый подход:

val empty = Array<String>(3) { "it = $it" }

Шестой подход:

val empty = Array<String>(0, { _ -> "" })