"อีกหนึ่งหัวข้อที่น่าสนใจ"
"เซอร์ไพร์สกำลังมา! วันเกิดฉันเหรอ?"
"วันนี้ ฉันจะบอกคุณเกี่ยวกับ generics generics เป็นประเภทที่มีพารามิเตอร์ ใน Java คลาสคอนเทนเนอร์ให้คุณระบุประเภทของออบเจกต์ภายใน"
"เมื่อเราประกาศตัวแปรทั่วไป เราจะระบุสองประเภทแทนที่จะเป็นประเภทเดียว: ประเภทตัวแปรและประเภทของข้อมูลที่จัดเก็บ"
"ArrayList เป็นตัวอย่างที่ดีเมื่อเราสร้าง ArrayList object ใหม่ จะเป็นการสะดวกที่จะระบุประเภทของค่าที่จะเก็บไว้ในรายการนี้"
รหัส | คำอธิบาย |
---|---|
|
สร้างตัวแปร ArrayList ชื่อlist . กำหนดวัตถุ ArrayList ให้กับมัน รายการนี้สามารถจัดเก็บวัตถุสตริง เท่านั้น |
|
สร้างตัวแปร ArrayList ชื่อlist . กำหนดวัตถุ ArrayList ให้กับมัน รายการ นี้สามารถเก็บค่าใดๆ |
|
สร้างตัวแปร ArrayList ชื่อlist . กำหนดวัตถุ ArrayList ให้กับมัน รายการนี้สามารถจัดเก็บ Integer และint ค่า เท่านั้น |
"ฟังดูน่าสนใจมาก โดยเฉพาะส่วนที่เกี่ยวกับ การเก็บค่าทุกประเภท "
"ดูเหมือนว่าจะเป็นสิ่งที่ดี ในความเป็นจริง ถ้าเราใส่สตริงลงใน ArrayList ในเมธอดหนึ่ง แล้วคาดว่ามันจะมีตัวเลขในเมธอดอื่น โปรแกรมจะหยุดทำงาน (ยุติด้วยข้อผิดพลาด)"
"ฉันเห็น."
"สำหรับตอนนี้ เราจะไม่สร้าง คลาส ของเราเองด้วยพารามิเตอร์ประเภท เราจะใช้คลาสที่มีอยู่"
"คลาสใด ๆ ที่สามารถเป็นพารามิเตอร์ประเภท แม้แต่คลาสที่ฉันเขียน"
"ใช่ ประเภทใดก็ได้ยกเว้นประเภทดั้งเดิม พารามิเตอร์ประเภททั้งหมดต้องสืบทอดมาจากคลาส Object"
" คุณหมายความว่าฉันเขียน ArrayList<int> ไม่ได้ เหรอ "
"แน่นอน คุณทำไม่ได้ แต่นักพัฒนา Java ได้เขียนคลาส wrapper สำหรับแต่ละประเภทดั้งเดิม คลาสเหล่านี้สืบทอดObjectนี่คือลักษณะที่ปรากฏ:"
ประเภทดึกดำบรรพ์ | ระดับ | รายการ |
---|---|---|
นานาชาติ | จำนวนเต็ม | ArrayList< จำนวนเต็ม > |
สองเท่า | สองเท่า | ArrayList< ดับเบิ้ล > |
บูลีน | บูลีน | ArrayList< บูลีน > |
ถ่าน | อักขระ | ArrayList< อักขระ > |
ไบต์ | ไบต์ | ArrayList< ไบต์ > |
"คุณสามารถกำหนดคลาสดั้งเดิมและแอนะล็อก (คลาสตัวตัด) ให้กันและกันได้อย่างง่ายดาย:"
ตัวอย่าง |
---|
|
|
|
|
|
"เยี่ยมมาก ฉันคิดว่าฉันจะพยายามใช้ ArrayList ให้บ่อยขึ้น"
GO TO FULL VERSION