На Java ми могли зробити наступне
public class TempClass {
List<Integer> myList = null;
void doSomething() {
myList = new ArrayList<>();
myList.add(10);
myList.remove(10);
}
}
Але якщо ми перепишемо його в Котлін безпосередньо, як нижче
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
myList!!.add(10)
myList!!.remove(10)
}
}
Я отримав помилку не знаходження addта removeфункціонування зі свого списку
Я працюю навколо кастингу в ArrayList, але це не дивно, що потрібно передати його, тоді як у Java лиття не потрібно. І це перемагає мета створення абстрактного списку класів
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
(myList!! as ArrayList).add(10)
(myList!! as ArrayList).remove(10)
}
}
Чи є у мене спосіб використовувати List, але не потрібно його додавати, як, що можна зробити на Java?
myList = nullа потім пізніше на виклик додайте без нього!!. Ви можете подолати це, використовуючиlateinitключове слово перед вашою власністю так:lateinit var myList: List<Int>таким чином вам не потрібно буде ініціалізувати список негайно, але ви гарантуєте компілятору, що ви будете його ініціалізувати перед першим використанням списку. Це більш плавне рішення, але воно покладає на вас відповідальність як на розробника.