Mobile Apps

properties lateinit ใน Kotlin คืออะไร

หลายครั้งที่เราสร้างตัวแปรขึ้นมาแต่ไม่ต้องการ initialize ในเวลานั้น แน่นอนว่าเราจะต้องแก้ปัญหาด้วย Null Safety

ขอบคุณข้อมูลจาก : blog.mindorks.com , youtube

หลายครั้งที่เราสร้างตัวแปรขึ้นมาแต่ไม่ต้องการ initialize ในเวลานั้น แน่นอนว่าเราจะต้องแก้ปัญหาด้วย Null Safety (กำหนดให้ตัวแปรเป็นค่า null ได้ ด้วยการเพิ่มเครื่องหมาย ?)

private var country: String? = null

แต่จะทำไงถ้าเราไม่ต้องการใช้ nullable นั่นเป็นที่มาของ keyword Lateinit นั่นเอง ซึ่งย่อมาจาก late initialization

lateinit ย่อมาจาก Late initialization

lateinit ต้องใช้ร่วมกับ var และต้องแน่ใจว่าก่อนเรียกใช้ตัวแปรที่มี keyword นี้ ต้องมีการ initialize แล้ว ไม่งั้นจะเกิด error ถ้าไม่แน่ใจก็ใช้ isInitialized เพื่อตรวจสอบก่อน เช่น

fun main() {
	val personal = Personal()
	personal.setValue("Ohm")
	println(personal.getValue())
}

class Personal {
	lateinit var myName: String

	fun setValue(name: String) {
		myName = name
	}

	fun getValue() = if (::myName.isInitialized) myName else "Not initialized"
}

ผลลัพธ์ที่ได้คือ Not initialized

Tags