
“สวัสดี อามีโก้!”
"วันนี้ผมจะมาพูดถึงautoboxingครับautoboxingหมายถึงการใส่อะไรลงไปในกล่องโดยอัตโนมัติ"
"คุณจะจำได้ว่า Java มีประเภทที่สืบทอดคลาส Object เช่นเดียวกับประเภทดั้งเดิม แต่กลับกลายเป็นว่าสิ่งที่สะดวกอย่างคอลเลกชันและทั่วไปใช้งานได้เฉพาะกับประเภทที่สืบทอด Object"
"จากนั้นจึงตัดสินใจที่จะสร้างคู่ที่ไม่ใช่แบบดั้งเดิมของประเภทดั้งเดิมทุกประเภท"
ประเภทดึกดำบรรพ์ | คู่ที่ไม่ใช่ดั้งเดิม |
---|---|
ไบต์ | ไบต์ |
สั้น | สั้น |
นานาชาติ | จำนวนเต็ม |
ยาว | ยาว |
ลอย | ลอย |
สองเท่า | สองเท่า |
บูลีน | บูลีน |
ถ่าน | อักขระ |
เป็นโมฆะ | เป็นโมฆะ |
"แต่ไม่สะดวกอย่างยิ่งที่จะแปลงระหว่างประเภทเหล่านี้ตลอดเวลา:"
int x = 3;
Integer y = new Integer(x + 1);
int z = y.intValue();
"โดยเฉพาะอย่างยิ่งเมื่อทำงานกับคอลเลกชันโดยตรง:"
int[] numbers = new int[10];
ArrayList list = new ArrayList();
for (int i = 0; i < numbers.length; i++)
{
list.add( new Integer(i));
}
"นั่นเป็นเหตุผลที่ผู้สร้างของ Java คิดค้น «การทำกล่องอัตโนมัติ» ของประเภทดั้งเดิมและ 'แกะกล่อง' กับคู่ที่ไม่ใช่แบบดั้งเดิม"
"นี่คือวิธีการทำงาน:
คุณเห็นอะไร | เกิดอะไรขึ้นจริงๆ |
---|---|
|
|
|
|
|
|
|
|
"มันง่ายมาก คุณสามารถกำหนดประเภท int และจำนวนเต็มให้กันและกันได้ และคอมไพเลอร์จะดูแลทุกอย่างที่เหลือเอง"
"นั่นสะดวกมาก"
"ใช่ แต่มีความแตกต่างที่ฉันจะพูดถึงในภายหลัง"
GO TO FULL VERSION