Generics เป็นวิธีหนึ่งในการสร้างคลาสและวิธีการที่ปลอดภัยสำหรับประเภทที่สามารถทำงานกับอ็อบเจ็กต์ประเภทต่างๆ เพื่อตรวจจับข้อผิดพลาดของประเภทในเวลาคอมไพล์แทนที่จะเป็นรันไทม์
เปิดตัวในเวอร์ชัน 5.2
GenericClass ระดับสาธารณะ{รายการ T สุดท้ายส่วนตัว; GenericClass สาธารณะ (รายการ T) {this.item = รายการ; } สาธารณะ T getItem() {คืนสินค้า; - -
ส่วนตัวคงที่เป็นโมฆะ printItem (รายการ T) {System.out.println (item.toString ()); -
ใช้เพื่อจำกัดหรือผูกกับบางประเภทหรือประเภทย่อย
มันจะช่วยให้เราเรียกใช้วิธีการของคลาสหรืออินเทอร์เฟซที่มีขอบเขต
ส่วนตัวคงที่เพิ่มสองครั้ง (T numOne, T numTwo) {return numOne.doubleValue() + numTwo.doubleValue(); -
เป็นคุณลักษณะที่ช่วยให้คอมไพลเลอร์กำหนดประเภทของวิธีการทั่วไปหรือพารามิเตอร์ตัวสร้างได้โดยอัตโนมัติ
รายการ <จำนวนเต็ม> รายการ = ใหม่ ArrayList<>();
มันเป็นสัญลักษณ์ >
ที่ใช้เพื่อแสดงอาร์กิวเมนต์ประเภทที่ไม่รู้จัก
โมฆะคงที่ส่วนตัว printItemsInList (รายการ > รายการ) {สำหรับ (รายการวัตถุ: รายการ) {System.out.println (รายการ); - -
มันถูกใช้เพื่อระบุว่าอาร์กิวเมนต์ประเภทจะต้องเป็นชนิดย่อยของคลาสหรืออินเทอร์เฟซที่แน่นอน
ใช้เพื่อเข้าถึงรายการต่างๆ
โมฆะคงที่ส่วนตัว printItemsInList (รายการ ขยายหมายเลข> รายการ) {สำหรับ (หมายเลขหมายเลข: รายการ) {System.out.println (หมายเลข); - -
มันถูกใช้เพื่อระบุว่าอาร์กิวเมนต์ประเภทจะต้องเป็นชนิดพิเศษของคลาสหรืออินเทอร์เฟซบางอย่าง
ใช้สำหรับแก้ไขรายการ
รายการ super Number> number = new ArrayList<>();numbers.add(10);numbers.add(10.2);numbers.add(10.4f);System.out.println(numbers);
ประเภทความปลอดภัย
ชนิดข้อมูลได้รับการแก้ไขในเวลาคอมไพล์มากกว่ารันไทม์ ซึ่งทำให้โค้ดมีประสิทธิภาพและเชื่อถือได้มากขึ้น
การนำโค้ดกลับมาใช้ใหม่ได้
เขียนคลาสและวิธีการที่สามารถทำงานกับข้อมูลหลายประเภทซึ่งสามารถช่วยลดจำนวนโค้ดที่คุณต้องเขียน
ผลงาน
ปรับปรุงประสิทธิภาพโดยลดความจำเป็นในการแคสต์ประเภท และหลีกเลี่ยงค่าใช้จ่ายในการตรวจสอบประเภทรันไทม์
ประเภทการลบ
เป็นคุณลักษณะสำคัญที่จะลบโค้ดทั่วไปขณะรันไทม์ ซึ่งสามารถจำกัดประโยชน์ของข้อมูลทั่วไปในบางสถานการณ์
การสนับสนุนที่จำกัดสำหรับประเภทดั้งเดิม
ข้อมูลทั่วไปใน Java ไม่รองรับประเภทดั้งเดิม เช่น int หรือ double โดยตรง คุณต้องใช้คลาส wrapper ที่เกี่ยวข้องแทน เช่น Integer หรือ Double ซึ่งอาจมีประสิทธิภาพน้อยกว่าการทำงานกับประเภทดั้งเดิมโดยตรง
ความซับซ้อน
สามารถเพิ่มความซับซ้อนให้กับโค้ดที่ใช้ลำดับชั้นของประเภทที่ซับซ้อนและประเภทไวด์การ์ด