2015-07-23 13 views
14

Esiste un modo semplice per convertire un ArrayList Java in un array Kotlin? Il seguente codice:Java ArrayList to Kotlin Array

fun test(): Array<String> { 
    val elems = ArrayList<String>() 
    return elems.toArray() 
} 

dà l'errore:

main.kt:2:15: error: unresolved reference: ArrayList 
    val elems = ArrayList<String>() 
      ^

sto analizzando alcuni JSON e non so quanti elementi ho intenzione di finire con, ma una volta che ho leggerli non ho bisogno di modificare i dati in alcun modo quindi ho pensato di utilizzare gli array Kotlin come tipo di dati.

+1

cambiare la risposta accettata, @bashor fornisce la risposta semplice alla domanda e che dovrebbe essere la risposta accettata. Altrimenti confondi le persone che vengono e leggono la tua domanda e cercano la risposta diretta. –

+0

Si dovrebbe sempre inviare il messaggio di errore del compilatore, non solo "non si compila" –

+0

@JaysonMinard Grazie. Ho aggiunto l'output del compilatore. –

risposta

4

Perché utilizzare un array? Gli array di Kotlin sono mutabili proprio come gli array Java. Dovresti usare una lista di Kotlin, che al contrario di MutableList, è immutabile. Sul motivo per cui il codice non viene compilato: toArray restituisce un oggetto [], se si desidera una stringa [] da un elenco è necessario utilizzare la versione di toArray che accetta una matrice come argomento.

+4

Questa non è una risposta, è possibile rispondere alla domanda E fornire un'opinione allo stesso tempo. Questo fornisce solo un'opinione. –

+1

Kotlin 'List' è di sola lettura, non immutabile. –

+2

Il metodo corretto è 'toTypedArray' come indicato nella risposta da @bashor, non' toArray' –

35

Tenta di utilizzare la funzione di estensione toTypedArray, come:

fun test(): Array<String> { 
    val elems = arrayListOf<String>() 
    return elems.toTypedArray() 
} 
+6

Questa risposta è corretta per la domanda che viene posta.I commenti nell'altra risposta di @ diesieben07 fanno punti validi sugli elenchi rispetto agli array, ma questa risposta è il comportamento corretto quando si utilizzano gli array. –

-1

è possibile utilizzare Kotlin lista è facile da usare perché la conversione di matrice Java per Kotlin gamma entrambi sono mutabili.

provare questo ....

fun learnlist(){ 
var stringList= listOf<String>("a","b","c","d") 
    for (st in stringList) 
     print(st) 

    var intlist= listOf<Int>(1,2,3,4,5) 
    for(i in intlist) 
     print(i) 

} 
+0

Puoi spiegare usando il codice chiesto da OP? –