Что такое эквивалент 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, { _ -> "" })