2015-07-23 21 views
14

Gibt es eine einfache Möglichkeit, eine Java ArrayList in ein Kotlin Array zu konvertieren? Der folgende Code:Java ArrayList zu Kotlin Array

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

gibt den Fehler:

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

ich einige JSON Parsen und nicht wissen, wie viele Elemente, die ich mit, um am Ende werde, aber sobald ich habe lese sie Ich muss die Daten in keiner Weise ändern, also dachte ich, ich würde mit Kotlin-Arrays als Datentyp gehen.

+1

Bitte geben Sie die akzeptierte Antwort ändern, @bashor bietet die einfache Antwort auf Ihre Frage und das sollte die akzeptierte Antwort. Ansonsten verwirren Sie Leute, die kommen und Ihre Frage lesen und nach der direkten Antwort suchen. –

+0

Sie sollten immer die Fehlermeldung des Compilers, nicht nur "es kompiliert nicht" –

+0

@JaysonMinard Vielen Dank. Ich habe die Compiler-Ausgabe hinzugefügt. –

Antwort

4

Warum ein Array verwenden? Kotlin-Arrays sind wie Java-Arrays veränderbar. Sie sollten eine Kotlin-Liste verwenden, die im Gegensatz zu MutableList unveränderlich ist. Warum der Code nicht kompiliert: toArray gibt ein Object [] zurück, wenn Sie einen String [] von einer Liste haben möchten, müssen Sie die toArray-Version verwenden, die ein Array als Argument akzeptiert.

+4

Dies ist keine Antwort, Sie können die Frage beantworten UND gleichzeitig eine Meinung abgeben. Dies gibt nur eine Meinung. –

+1

Kotlin 'List' ist schreibgeschützt, nicht unveränderbar. –

+2

Die richtige Methode ist 'toTypedArray', wie in der Antwort von @Bashor, nicht' toArray' –

35

Versuchen zu verwenden Erweiterungsfunktion toTypedArray, wie:

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

Diese Antwort ist richtig für die gestellte Frage.Kommentare in der anderen Antwort von @ diesieben07 machen gültige Punkte über Listen gegen Arrays, aber diese Antwort ist das richtige Verhalten bei der Verwendung von Arrays. –

-1

können Sie Kotlin Liste verwenden Sie es einfach zu bedienen ist, warum Java-Array konvertiert Array Kotlin beide wandelbar sind.

try this ....

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

Können Sie erklären, dass Sie den von OP angeforderten Code verwenden? –