Java Generic Methods:
ฉันจะไม่พูดอะไรมากเกี่ยวกับความหมายของนายพลและคำจำกัดความของคลาสทั่วไปใน Java ก็ค่อนข้างง่ายเช่น: การทดสอบระดับสาธารณะ <t> {} สิ่งนี้กำหนดการทดสอบชั้นเรียนทั่วไป เมื่อสร้างอินสแตนซ์คลาสนี้คุณต้องระบุประเภทเฉพาะของ T ทั่วไป t ตัวอย่างเช่น: ทดสอบ <jobch> t = การทดสอบใหม่ <jobch> ();, ระบุว่าประเภทของทั่วไป t คือวัตถุ
แต่วิธีการทั่วไปใน Java นั้นซับซ้อนกว่า
คลาสทั่วไปหมายถึงประเภทเฉพาะของทั่วไปเมื่ออินสแตนซ์คลาส วิธีการทั่วไประบุประเภทเฉพาะของทั่วไปเมื่อเรียกวิธีการ
รูปแบบไวยากรณ์สำหรับการกำหนดวิธีการทั่วไปมีดังนี้:
รูปแบบไวยากรณ์ของการเรียกวิธีการทั่วไปมีดังนี้:
ในการอธิบายเมื่อกำหนดวิธีการทั่วไปคุณต้องเพิ่มค่า <t> ลงในค่าส่งคืนเพื่อประกาศว่านี่เป็นวิธีการทั่วไปถือ T ทั่วไปและจากนั้นคุณสามารถใช้ทั่วไป T เป็นค่าคืนของวิธีการ
ฟังก์ชั่นของคลาส <t> คือการระบุประเภทเฉพาะของประเภททั่วไปและตัวแปร C ของประเภทคลาส <t> สามารถใช้เพื่อสร้างวัตถุของคลาสทั่วไป
ทำไมต้องใช้ตัวแปร C เพื่อสร้างวัตถุ? เนื่องจากเป็นวิธีทั่วไปหมายความว่าเราไม่ทราบว่าประเภทเฉพาะคืออะไรหรือวิธีการสร้างคืออะไร ดังนั้นจึงไม่มีวิธีการใหม่วัตถุ แต่เราสามารถใช้วิธีการใหม่ของตัวแปร C เพื่อสร้างวัตถุนั่นคือใช้การสะท้อนเพื่อสร้างวัตถุ
พารามิเตอร์ที่ต้องการโดยวิธีการทั่วไปเป็นประเภทคลาส <t> และค่าส่งคืนของเมธอด class.forname () ยังเป็นคลาส <t> ดังนั้น class.forname () สามารถใช้เป็นพารามิเตอร์ ในหมู่พวกเขาประเภทใดคือพารามิเตอร์ในเมธอด forname () และประเภทคือคลาสที่ส่งคืน <t> ในตัวอย่างนี้วิธีการ forname () จะถูกส่งผ่านในเส้นทางที่สมบูรณ์ของคลาสผู้ใช้ดังนั้นวัตถุประเภทของคลาสประเภท <ผู้ใช้> จะถูกส่งกลับ ดังนั้นเมื่อเรียกใช้วิธีการทั่วไปประเภทของตัวแปร C คือคลาส <suser> ดังนั้น t ทั่วไปในวิธีการทั่วไปจะถูกระบุว่าเป็นผู้ใช้ดังนั้นประเภทของตัวแปร OBJ คือผู้ใช้
แน่นอนว่าวิธีการทั่วไปไม่สามารถมีเพียงคลาสพารามิเตอร์เดียว <t> แต่พารามิเตอร์อื่น ๆ สามารถเพิ่มได้ตามต้องการ
ทำไมต้องใช้วิธีการทั่วไป? เนื่องจากคลาสทั่วไปจำเป็นต้องระบุประเภทเมื่ออินสแตนซ์หากคุณต้องการเปลี่ยนประเภทคุณต้องต่ออายุซึ่งอาจไม่ยืดหยุ่นเพียงพอ ในขณะที่วิธีการทั่วไปสามารถระบุประเภทเมื่อเรียกซึ่งมีความยืดหยุ่นมากขึ้น
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!