2015-07-23 24 views
14

Czy istnieje prosty sposób konwertowania Java ArrayList do tablicy Kotlin? Poniższy kod:Java ArrayList to Kotlin Array

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

daje błąd:

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

jestem pewien parsowania JSON i nie wiem, jak wiele elementów zamierzam skończyć z, ale kiedy mam przeczytaj je, nie muszę modyfikować danych w żaden sposób, więc pomyślałem, że pójdę z tablicami Kotlin jako typem danych.

+1

Proszę zmienić zaakceptowane odpowiedź, @bashor zapewnia proste odpowiedzi na swoje pytanie, a które powinny być zaakceptowane odpowiedź. W przeciwnym razie mylisz ludzi, którzy przychodzą, czytają twoje pytanie i szukają bezpośredniej odpowiedzi. –

+0

Powinieneś zawsze publikować komunikat o błędzie kompilatora, a nie tylko "nie kompiluje się" –

+0

@JaysonMinard Dzięki. Dodałem dane wyjściowe kompilatora. –

Odpowiedz

4

Dlaczego warto korzystać z tablicy? Tablice Kotlin są zmienne podobnie jak Java Arrays. Powinieneś użyć Listy Kotlin, która w przeciwieństwie do MutableList, jest niezmienna. Co do tego, dlaczego kod się nie kompiluje: toArray zwraca obiekt [], jeśli chcesz uzyskać ciąg [] z listy, musisz użyć wersji toArray, która pobiera tablicę jako argument.

+4

To nie jest odpowiedź, możesz odpowiedzieć na pytanie ORAZ przedstawić opinię w tym samym czasie. Stanowi to tylko opinię. –

+1

Kotlin 'Lista' jest tylko do odczytu, nie jest niezmienna. –

+2

Poprawną metodą jest 'toTypedArray', jak wskazano w odpowiedzi z @bashor, a nie' toArray' –

35

spróbować użyć funkcji przedłużacza toTypedArray, jak:

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

Ta odpowiedź jest poprawna dla zadawanego pytania.Komentarze w drugiej odpowiedzi @ diesieben07 tworzą poprawne punkty dotyczące list vs. tablic, ale ta odpowiedź jest poprawnym zachowaniem przy korzystaniu z tablic. –

-1

można użyć Kotlin lista jest łatwy w użyciu, dlaczego konwersja tablicy java Kotlin tablicę oba są zmienne.

spróbować ....

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

Czy możesz wyjaśnić, używając kodu zadanego przez OP? –