Em Java, poderíamos fazer o seguinte
public class TempClass {
List<Integer> myList = null;
void doSomething() {
myList = new ArrayList<>();
myList.add(10);
myList.remove(10);
}
}
Mas se reescrevê-lo para Kotlin diretamente como abaixo
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
myList!!.add(10)
myList!!.remove(10)
}
}
Eu recebi o erro de não encontrar add
e remove
funcionar da minha lista
Eu trabalho em torno da transmissão para ArrayList, mas é estranho precisar lançá-lo, enquanto no Java a transmissão não é necessária. E isso derrota o propósito de ter a classe abstrata List
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
(myList!! as ArrayList).add(10)
(myList!! as ArrayList).remove(10)
}
}
Existe uma maneira de eu usar a lista, mas não precisar transmiti-la, como o que poderia ser feito em Java?
myList = null
e, posteriormente, adicionar sem chamar!!
. Você pode superar isso usando alateinit
palavra - chave na frente de sua propriedade da seguinte maneira:lateinit var myList: List<Int>
dessa forma, não será necessário inicializar a lista imediatamente, mas garante ao compilador que a inicializará antes de usar a lista pela primeira vez. É uma solução mais suave, mas coloca uma responsabilidade em você como desenvolvedor.