"อีกหนึ่งหัวข้อที่น่าสนใจ"

"เซอร์ไพร์สกำลังมา! วันเกิดฉันเหรอ?"

"วันนี้ ฉันจะบอกคุณเกี่ยวกับ generics generics เป็นประเภทที่มีพารามิเตอร์ ใน Java คลาสคอนเทนเนอร์ให้คุณระบุประเภทของออบเจกต์ภายใน"

"เมื่อเราประกาศตัวแปรทั่วไป เราจะระบุสองประเภทแทนที่จะเป็นประเภทเดียว: ประเภทตัวแปรและประเภทของข้อมูลที่จัดเก็บ"

"ArrayList เป็นตัวอย่างที่ดีเมื่อเราสร้าง ArrayList object ใหม่ จะเป็นการสะดวกที่จะระบุประเภทของค่าที่จะเก็บไว้ในรายการนี้"

รหัส คำอธิบาย
ArrayList<String> list = new ArrayList<String>();
สร้างตัวแปร ArrayList ชื่อlist.
กำหนดวัตถุ ArrayList ให้กับมัน
รายการนี้สามารถจัดเก็บวัตถุสตริง เท่านั้น
ArrayList list = new ArrayList();
สร้างตัวแปร ArrayList ชื่อlist.
กำหนดวัตถุ ArrayList ให้กับมัน รายการ นี้สามารถเก็บค่าใดๆ
ArrayList<Integer> list = new ArrayList<Integer>();
สร้างตัวแปร ArrayList ชื่อlist.
กำหนดวัตถุ ArrayList ให้กับมัน
รายการนี้สามารถจัดเก็บIntegerและintค่า เท่านั้น

"ฟังดูน่าสนใจมาก โดยเฉพาะส่วนที่เกี่ยวกับ การเก็บค่าทุกประเภท "

"ดูเหมือนว่าจะเป็นสิ่งที่ดี ในความเป็นจริง ถ้าเราใส่สตริงลงใน ArrayList ในเมธอดหนึ่ง แล้วคาดว่ามันจะมีตัวเลขในเมธอดอื่น โปรแกรมจะหยุดทำงาน (ยุติด้วยข้อผิดพลาด)"

"ฉันเห็น."

"สำหรับตอนนี้ เราจะไม่สร้าง คลาส ของเราเองด้วยพารามิเตอร์ประเภท เราจะใช้คลาสที่มีอยู่"

"คลาสใด ๆ ที่สามารถเป็นพารามิเตอร์ประเภท แม้แต่คลาสที่ฉันเขียน"

"ใช่ ประเภทใดก็ได้ยกเว้นประเภทดั้งเดิม พารามิเตอร์ประเภททั้งหมดต้องสืบทอดมาจากคลาส Object"

" คุณหมายความว่าฉันเขียน ArrayList<int> ไม่ได้ เหรอ "

"แน่นอน คุณทำไม่ได้ แต่นักพัฒนา Java ได้เขียนคลาส wrapper สำหรับแต่ละประเภทดั้งเดิม คลาสเหล่านี้สืบทอดObjectนี่คือลักษณะที่ปรากฏ:"

ประเภทดึกดำบรรพ์ ระดับ รายการ
นานาชาติ จำนวนเต็ม ArrayList< จำนวนเต็ม >
สองเท่า สองเท่า ArrayList< ดับเบิ้ล >
บูลีน บูลีน ArrayList< บูลีน >
ถ่าน อักขระ ArrayList< อักขระ >
ไบต์ ไบต์ ArrayList< ไบต์ >

"คุณสามารถกำหนดคลาสดั้งเดิมและแอนะล็อก (คลาสตัวตัด) ให้กันและกันได้อย่างง่ายดาย:"

ตัวอย่าง
int a = 5;
Integer b = a;
int c = b;
Character c = 'c';  //the literal c is a char
char d = c;
Byte b = (byte) 77;  // The literal 77 is an int
Boolean isOk = true;  // the literal true is a boolean
Double d = 1.0d;  // The literal 1.0d is a double

"เยี่ยมมาก ฉันคิดว่าฉันจะพยายามใช้ ArrayList ให้บ่อยขึ้น"