ใน Java เราสามารถทำสิ่งต่อไปนี้
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 และนั่นก็เอาชนะวัตถุประสงค์ของการมีลิสต์คลาสนามธรรม
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>
วิธีนี้คุณไม่จำเป็นต้องเริ่มต้นรายการทันที แต่คุณรับประกันกับคอมไพเลอร์ที่คุณจะเริ่มต้นมันก่อนที่จะใช้รายการในครั้งแรก มันเป็นทางออกที่ราบรื่นกว่า แต่มันทำให้คุณมีความรับผิดชอบในฐานะนักพัฒนา