حسنًا! أنا أتعلم حقًا شيئًا جديدًا في المقابلة. أجرت شركة فقط اختبارًا ، لكنني مندهش جدًا من سبب قيام موقع مطور الويب بالفعل بتأخذ سؤال آلية Java Reflection ، لكن من الجيد بالنسبة لي أن أتعلم ودراسة آلية الانعكاس!
دعنا نتحدث عن ماهية آلية انعكاس جافا. في حالة الجري ، لأي فصل ، يمكنك معرفة جميع خصائص وطرق هذه الفئة ؛ بالنسبة لأي كائن ، يمكنك استدعاء أي طريقة لمعلوماته التي تم الحصول عليها ديناميكيًا ، وتسمى وظيفة استدعاء طرق الكائن ديناميكيًا آلية الانعكاس للغة Java. الوظائف الرئيسية: احكم على الفصل الذي ينتمي إليه أي كائن في وقت التشغيل ؛ بناء كائنات أي فئة في وقت التشغيل ؛ الحكم على متغيرات وأساليب أي فصل في وقت التشغيل ؛ استدعاء طرق أي كائن في وقت التشغيل ؛ توليد الوكيل الديناميكي.
ثم اترك مثالًا آخر.
package com.beidou.test ؛ import java.lang.reflect.method ؛ فئة عامة ديناميكية {public static void main (string [] args) يرمي الاستثناء {class c = dynamic.class ؛ // الحصول على طريقة الكائن [] اسم فئة [] parametertypes = 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}) ؛ // احصل على كائن كائن المعلمات [] وسيطات = كائن جديد [] {New Integer (23) ، سلسلة جديدة ("ABC")} ؛ // تنفيذ سلسلة s = (سلسلة) sage.invoke (OBJ ، وسيطات) ؛ system.out.print (s) ؛ } السلسلة العامة getage (int age ، اسم السلسلة) {return name+":"+age ؛ }}آلية انعكاس Java أعلاه - الطريقة البسيطة لاتصال الكائنات الديناميكية هي كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.