0Pricing
Kotlin Academy · บทเรียน

ชนิดข้อมูลจากแพลตฟอร์ม

ความสามารถเป็นค่าว่างจาก Java

ชนิดข้อมูลจากแพลตฟอร์ม เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน

Kotlin พบกับ Java

Kotlin ทำงานบน JVM และเรียกใช้โค้ด Java อยู่เสมอ แต่ Java ไม่มีแนวคิดเรื่องชนิดที่เป็นค่าว่างได้และชนิดที่ไม่เป็นค่าว่าง

แล้ว Kotlin จัดการกับค่าที่มาจาก Java อย่างไร คำตอบคือผ่าน ชนิดแพลตฟอร์ม

ชนิดแพลตฟอร์มคืออะไร

ชนิดแพลตฟอร์มคือชนิดที่ Kotlin ได้รับจาก Java ซึ่งไม่ทราบว่ารองรับค่าว่างหรือไม่

Kotlin เขียนชนิดนี้เป็น String! ในข้อความแสดงข้อผิดพลาด เครื่องหมายอัศเจรีย์หมายความว่าอาจเป็นค่าว่างหรือไม่เป็นค่าว่างก็ได้ และ Kotlin จะไม่บังคับให้เลือกแบบใดแบบหนึ่ง

การตรวจสอบที่ผ่อนปรน

สำหรับชนิดแพลตฟอร์ม Kotlin จะผ่อนปรนการตรวจสอบค่าว่าง คุณสามารถถือว่าค่านั้นไม่เป็นค่าว่างได้โดยไม่เกิดข้อผิดพลาดจากคอมไพเลอร์

ข้อแลกเปลี่ยนคือ หากค่านั้นเป็นค่าว่างจริง คุณจะได้รับ NullPointerException ขณะทำงาน

คุณเป็นผู้เลือกชนิด

เมื่อจัดเก็บค่าชนิดแพลตฟอร์ม คุณจะเป็นผู้กำหนดชนิดของค่านั้น:

  • เป็นชนิดที่ไม่เป็นค่าว่าง String → สะดวกแต่มีความเสี่ยง
  • เป็นชนิดที่เป็นค่าว่างได้ String? → ปลอดภัยและระบุอย่างชัดเจน

ตัวอย่าง Kotlin นี้จำลองตัวเลือกดังกล่าว

fun fromJava(): String? = "value from Java"

fun main() {
    val safe: String? = fromJava()
    println(safe?.length)
}

ตัวเลือกที่มีความเสี่ยง

หากคุณสมมติว่าค่านั้นไม่เป็นค่าว่าง แต่แหล่งที่มาคืนค่าว่าง การทำงานล้มเหลวจะเกิดขึ้นขณะกำหนดค่าหรือใช้งานครั้งแรก

นี่คืออันตรายที่ซ่อนอยู่ของชนิดแพลตฟอร์ม

fun fromJava(): String? = null

fun main() {
    try {
        val risky: String = fromJava()!!
        println(risky.length)
    } catch (e: NullPointerException) {
        println("Null came from the Java side")
    }
}

คำอธิบายประกอบช่วยได้

ไลบรารี Java สามารถใช้คำอธิบายประกอบอย่าง @Nullable และ @NotNull ได้

เมื่อมีคำอธิบายประกอบเหล่านี้ Kotlin จะปฏิบัติตาม และมอบชนิด String? หรือ String ที่ถูกต้องให้คุณแทนชนิดแพลตฟอร์ม

แนวทางปฏิบัติที่ดี: ให้ถือว่าเป็นค่าว่างได้

เมื่อเรียกใช้โค้ด Java ที่ไม่มีคำอธิบายประกอบ นิสัยที่ปลอดภัยคือให้ถือว่าผลลัพธ์เป็นชนิดที่เป็นค่าว่างได้

กำหนดชนิดของตัวแปรด้วย ? และใช้การเรียกแบบปลอดภัย เช่นเดียวกับค่าที่เป็นค่าว่างได้ใน Kotlin

fun fromJava(): String? = "data"

fun main() {
    val value: String? = fromJava()
    val length = value?.length ?: 0
    println(length)
}

ขอบเขตเชิงป้องกัน

ให้ถือว่าขอบเขตระหว่าง Java กับ Kotlin เป็นแหล่งข้อมูลที่ไม่น่าเชื่อถือ ตรวจสอบค่าหรือกำหนดค่าเริ่มต้นให้ค่าต่าง ๆ ทันทีที่เข้าสู่โค้ด Kotlin ของคุณ

หลังจากนั้น โค้ดส่วนที่เหลือจะทำงานกับชนิด Kotlin ที่สะอาดและชัดเจน

fun fromJava(): String? = null

fun main() {
    val name = fromJava() ?: "default"
    // from here on, name is a clean non-null String
    println(name.uppercase())
}

เหตุผลที่ Kotlin อนุญาตให้ทำเช่นนี้

Kotlin อาจบังคับให้ค่าทุกค่าจาก Java เป็นชนิดที่เป็นค่าว่างได้ แต่จะทำให้การทำงานร่วมกับ Java มีโค้ดมากเกินความจำเป็น

ชนิดแพลตฟอร์มจึงเป็นการประนีประนอมที่ใช้งานได้จริง นั่นคือความสะดวกพร้อมตัวเลือกในการตรวจสอบอย่างเข้มงวด

การสังเกตชนิดแพลตฟอร์ม

คุณจะไม่เขียน String! ด้วยตนเอง ชนิดนี้จะปรากฏเฉพาะในคำแนะนำของสภาพแวดล้อมการพัฒนาแบบเบ็ดเสร็จและข้อความแสดงข้อผิดพลาด เมื่อคุณวางเมาส์เหนือค่าที่มาจาก Java

เมื่อเห็น ! นั่นคือสัญญาณให้คุณตัดสินใจเรื่องความสามารถในการเป็นค่าว่างได้อย่างรอบคอบ

สรุปรวม

ชนิดแพลตฟอร์มเชื่อม Java และ Kotlin เข้าด้วยกัน:

  • ไม่ทราบความสามารถในการเป็นค่าว่างได้ โดยแสดงเป็น Type!
  • Kotlin ให้คุณเลือกว่าจะเป็นชนิดที่เป็นค่าว่างได้หรือไม่เป็นค่าว่าง
  • เมื่อไม่แน่ใจ ให้ถือว่าเป็นชนิดที่เป็นค่าว่างได้เพื่อความปลอดภัย
  • คำอธิบายประกอบช่วยขจัดการคาดเดา
fun fromJava(): String? = "safe value"

fun main() {
    val value: String? = fromJava()
    println(value?.uppercase() ?: "missing")
}

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจของคุณเกี่ยวกับชนิดแพลตฟอร์ม

ทบทวน

คุณได้เรียนรู้ว่าความสามารถในการเป็นค่าว่างได้ข้ามขอบเขตระหว่าง Java กับ Kotlin อย่างไร:

  • ชนิดแพลตฟอร์มไม่ทราบความสามารถในการเป็นค่าว่างได้
  • Kotlin ผ่อนปรนการตรวจสอบ แต่สมมติฐานที่ผิดจะทำให้เกิด NPE ขณะทำงาน
  • ให้ถือว่าเป็นชนิดที่เป็นค่าว่างได้และกำหนดค่าเริ่มต้นที่ขอบเขต
  • คำอธิบายประกอบของ Java ช่วยคืนชนิดที่ถูกต้อง

การเจาะลึกเรื่องความปลอดภัยของค่าว่างจบลงเพียงเท่านี้

คำถามที่พบบ่อย

บทเรียน “ชนิดข้อมูลจากแพลตฟอร์ม” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ชนิดข้อมูลจากแพลตฟอร์ม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ชนิดข้อมูลจากแพลตฟอร์ม”

ความสามารถเป็นค่าว่างจาก Java คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “ชนิดข้อมูลจากแพลตฟอร์ม” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม

ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ชนิด Nullable และ Non-Null
  2. การเรียกใช้อย่างปลอดภัยและ Elvis
  3. ตัวดำเนินการ !!
  4. ชนิดข้อมูลจากแพลตฟอร์ม
← กลับไปที่ Kotlin Academy