"และตอนนี้ บทเรียนสั้นๆ จากดิเอโก สั้นและตรงประเด็น เกี่ยวกับการแปลงประเภทการอ้างอิง"
"เรามาเริ่มกันที่ตัวแปร Object คุณสามารถกำหนดประเภทการอ้างอิงใดๆ ให้กับตัวแปรดังกล่าว ( การแปลงที่กว้างขึ้น ) อย่างไรก็ตาม เพื่อให้การกำหนดไปในทิศทางอื่น ( การแปลงที่แคบลง ) คุณต้องระบุการดำเนินการส่งอย่างชัดเจน:"
รหัส | คำอธิบาย |
---|---|
|
การแปลงการอ้างอิงแบบขยายทั่วไป |
|
การแปลงการอ้างอิงที่แคบลงโดยทั่วไป |
|
ขยับขยายแปลง. |
|
การทำงานผิดพลาด! คุณไม่สามารถส่งการอ้างอิงจำนวนเต็มไปยังการอ้างอิงสตริง |
|
การทำงานผิดพลาด! คุณไม่สามารถส่งการอ้างอิงจำนวนเต็มไปยังการอ้างอิงแบบลอยตัว |
|
การแปลงเป็นประเภทเดียวกัน การแปลงการอ้างอิงที่แคบลง |
" การแปลงการอ้างอิงที่กว้างขึ้นหรือแคบลงไม่ได้เปลี่ยนแปลงออบเจกต์แต่อย่างใดส่วนที่แคบลง (หรือกว้างขึ้น) อ้างถึงข้อเท็จจริงที่ว่าการดำเนินการกำหนดรวมถึง (ไม่รวม) การตรวจสอบประเภทของตัวแปรและค่าใหม่โดยเฉพาะ "
"นี่เป็นตัวอย่างที่หายากที่ทุกอย่างชัดเจน"
"เพื่อหลีกเลี่ยงข้อผิดพลาดในตัวอย่างเหล่านี้เรา มีวิธีค้นหาว่าตัวแปร Object อ้างอิงถึงประเภทใด: "
int i = 5;
float f = 444.23f;
String s = "17";
Object o = f; // o stores a Float
if (o instanceof Integer)
{
Integer i2 = (Integer) o;
}
else if (o instanceof Float)
{
Float f2 = (Float) o; // This if block will be executed
}
else if (o instanceof String)
{
String s2 = (String) o;
}
"คุณควรดำเนินการตรวจสอบนี้ก่อนการแปลงที่กว้างขึ้นทุกครั้ง เว้นแต่คุณจะแน่ใจ 100% เกี่ยวกับประเภทของวัตถุ"
"เข้าใจแล้ว."
GO TO FULL VERSION