Ktoś z was może mi pomóc z tym małym problemem? Jestem bardzo nowy w programowaniu Kotlin i Android! Nie rozumiem, dlaczego ten fragment kodu zwraca mi następujący błąd:
class Catalog {
var musicList: List<Music> = ArrayList()
}
class Music{
var id: String = ""
}
fun main(args: Array<String>) {
var test: Catalog
test.musicList[0] = "1"
}
BŁĄD:
Variable 'test' must be initialized
Co jest nie tak? Dziękuję wam wszystkim!
2 odpowiedzi
Musisz go utworzyć przed wywołaniem metody pobierającej musicList
:
fun main(args: Array<String>) {
var test = Catalog()
test.musicList[0] = "1"
}
Ponadto, jeśli nie chcesz ponownie przypisywać wartości test
, możesz zadeklarować ją jako val
:
fun main(args: Array<String>) {
val test = Catalog()
test.musicList[0] = "1"
}
Po tym pojawią się inne 2 błędy:
- ponieważ
List
jest niezmienny, więc nie możesz użyć operatora[]
do przypisania wartości
Aby go rozwiązać, możesz użyć MutableList
zamiast List
.
class Catalog {
val musicList = mutableListOf<Music>()
}
- Nie masz elementu o indeksie 0, więc otrzymałeś wyjątek poza granicami. Aby go rozwiązać, możesz dodać swój element:
fun main(args: Array<String>) {
var test = Catalog()
test.musicList += Music("1")
}
W Kotlinie zmienną można zainicjować na dwa sposoby.
- init z wartością domyślną, taką jak ... var temp: String = ""
- init ze słowem kluczowym lateinit (oznacza, że zainicjujesz później), np. ... lateinit var temp: String
W twoim przypadku nie używasz lateinit Więc musisz zainicjować zmienną z wartością domyślną
var test = Catalog()
Lub jeśli chcesz zainicjować jako null
var test:Catalog? = null
Podobne pytania
Nowe pytania
java
Java to język programowania wysokiego poziomu. Użyj tego tagu, jeśli masz problemy z używaniem lub zrozumieniem samego języka. Ten tag jest rzadko używany samodzielnie i jest najczęściej używany w połączeniu z [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] i [maven].