español - ¿Cuál es el equivalente de Kotlin de la cadena de Java[]?
kotlin vs java (7)
Veo que Kotlin tiene
ByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArray
, que son equivalentes a
byte[], short[], int[],char[], double[], float[]
en Java en consecuencia.
Ahora me pregunto, ¿hay algún
StringArray
equivalente al
String[]
de Java
String[]
?
Para crear una
Array of Strings
vacía en Kotlin, debe usar uno de los siguientes seis enfoques:
Primer enfoque:
val empty = arrayOf<String>()
Segundo enfoque:
val empty = arrayOf("","","")
Tercer enfoque:
val empty = Array<String?>(3) { null }
Cuarto enfoque:
val empty = arrayOfNulls<String>(3)
Quinto enfoque:
val empty = Array<String>(3) { "it = $it" }
Sexto enfoque:
val empty = Array<String>(0, { _ -> "" })
Esos tipos están ahí para que pueda crear matrices de las primitivas, y no los tipos en caja.
Dado que String no es un primitivo en Java, puede usar
Array<String>
en Kotlin como el equivalente de un Java
String[]
.
Este ejemplo funciona perfectamente en Android
En kotlin puedes usar una expresión lambda para esto. La definición de Kotlin Array Constructor es:
Array(size: Int, init: (Int) -> T)
Lo que evalúa a:
skillsSummaryDetailLinesArray = Array(linesLen) {
i: Int -> skillsSummaryDetailLines!!.getString(i)
}
O:
skillsSummaryDetailLinesArray = Array<String>(linesLen) {
i: Int -> skillsSummaryDetailLines!!.getString(i)
}
En este ejemplo, la definición del campo fue:
private var skillsSummaryDetailLinesArray: Array<String>? = null
Espero que esto ayude
No hay un caso especial para
String
, porque
String
es un tipo de referencia ordinario en JVM, en contraste con las
primitivas de Java (
int
,
double
, ...)
: almacenarlas en una
Array<T>
referencia
Array<T>
requiere
encerrarlas en objetos como
Integer
y
Double
.
El propósito de las matrices especializadas como
IntArray
en Kotlin es almacenar primitivas no encajonadas, deshacerse de los gastos generales de boxeo y desempaquetado (lo mismo que Java
int[]
lugar de
Integer[]
).
Puede usar
Array<String>
(y
Array<String?>
Para nulables), que es equivalente a
String[]
en Java:
val stringsOrNulls = arrayOfNulls<String>(10) // returns Array<String?>
val someStrings = Array<String>(5) { "it = $it" }
val otherStrings = arrayOf("a", "b", "c")
Ver también: matrices en la referencia del idioma
Para
Strings
y otros tipos, solo usa
Array<*>
.
La razón por la que existen
IntArray
y otros es para evitar el autoboxing.
Entonces
int[]
relaciona con
IntArray
donde
Integer[]
relaciona con
Array<Int>
.
también puedes usar:
val frases = arrayOf("texto01","texto02 ","anotherText","and ")
por ejemplo.
use 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()