자바에서 우리는 다음을 할 수 있습니다
public class TempClass {
List<Integer> myList = null;
void doSomething() {
myList = new ArrayList<>();
myList.add(10);
myList.remove(10);
}
}
그러나 아래와 같이 Kotlin에 직접 다시 쓰면
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
myList!!.add(10)
myList!!.remove(10)
}
}
목록에서 찾을 수 add
없고 remove
작동 하지 않는 오류가 발생했습니다.
나는 그것을 ArrayList로 캐스팅하는 것을 해결하지만 Java 캐스팅은 필요하지 않지만 캐스팅해야합니다. 그리고 그것은 추상 클래스 List를 갖는 목적을 무너 뜨립니다.
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
(myList!! as ArrayList).add(10)
(myList!! as ArrayList).remove(10)
}
}
Java를 사용하여 수행 할 수있는 것과 같이 List를 사용할 수 있지만 캐스팅 할 필요가없는 방법이 있습니까?
myList = null
다음 나중에 전화없이 add!!
.lateinit
속성 앞에 키워드를 사용하여이를 극복 할 수 있습니다 .lateinit var myList: List<Int>
이렇게하면 목록을 즉시 초기화 할 필요는 없지만 목록을 처음 사용하기 전에 목록을 초기화하도록 컴파일러에 보장 할 수 있습니다. 더 부드러운 솔루션이지만 개발자로서 책임을집니다.