ดี! ฉันเรียนรู้สิ่งใหม่ ๆ ในการสัมภาษณ์จริงๆ บริษัท เพิ่งทำการทดสอบ แต่ฉันประหลาดใจมากว่าทำไมตำแหน่งของนักพัฒนาเว็บจึงใช้คำถามกลไกการสะท้อนชวาจริง ๆ แต่มันเป็นสิ่งที่ดีสำหรับฉันที่จะเรียนรู้และศึกษากลไกการสะท้อน!
มาพูดถึงกลไกการสะท้อนชวาคืออะไร ในสถานะการทำงานสำหรับชั้นเรียนใด ๆ คุณสามารถรู้คุณสมบัติและวิธีการทั้งหมดของคลาสนี้ สำหรับวัตถุใด ๆ คุณสามารถเรียกวิธีการใด ๆ ของข้อมูลที่ได้รับแบบไดนามิกและฟังก์ชั่นของการเรียกใช้วิธีการแบบไดนามิกของวัตถุเรียกว่ากลไกการสะท้อนของภาษา Java ฟังก์ชั่นหลัก: ตัดสินคลาสที่วัตถุใด ๆ เป็นของรันไทม์; สร้างวัตถุของคลาสใด ๆ ที่รันไทม์; ตัดสินตัวแปรสมาชิกและวิธีการของชั้นเรียนใด ๆ ที่รันไทม์; เรียกวิธีการของวัตถุใด ๆ ที่รันไทม์ สร้างพร็อกซีแบบไดนามิก
จากนั้นปล่อยตัวอย่างอื่น
แพ็คเกจ com.beidou.test; นำเข้า java.lang.reflect.method; คลาสสาธารณะแบบไดนามิก {โมฆะสาธารณะคงที่หลัก (สตริง [] args) โยนข้อยกเว้น {class c = dynamic.class; // รับวิธีวัตถุ [] methods (methody) {methody) ชื่อพารามิเตอร์คลาส [] พารามิเตอร์ therT = method.getParameterTypes (); สำหรับ (int i = 0; i <parameterTypes.length; i ++) {string namestring = parameterTypes [i] .getName (); System.out.print ("ParameterType:"+namestring); // วิธีการพิมพ์ประเภทพารามิเตอร์ประเภท} system.out.print ("returnType:"+method.getReturntype ()); System.out.println (); } Object OBJ = C.NewInstance (); // รับวัตถุวิธีการโดยสมมติว่าพารามิเตอร์ของวิธีการเป็น int, สตริง, วิธีการเรียกว่าวิธี getage sage = c.getMethod ("getage", คลาสใหม่ [] {int.class, string.class}); // รับวัตถุพารามิเตอร์วัตถุ [] อาร์กิวเมนต์ = วัตถุใหม่ [] {จำนวนเต็มใหม่ (23), สตริงใหม่ ("abc")}; // ดำเนินการสตริงเมธอด s = (สตริง) sage.invoke (obj, อาร์กิวเมนต์); System.out.print (s); } public String getage (อายุ int, ชื่อสตริง) {return name+":"+อายุ; -กลไกการสะท้อน Java ด้านบน - วิธีง่ายๆของการเรียกวัตถุแบบไดนามิกคือเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น