انعكاس
الانعكاس: قم بتخطيط خصائص وطرق الفئة إلى فئات مقابلة.
الاستخدام الأساسي للانعكاس
هناك ثلاث طرق للحصول على الفصل الدراسي:
فقط اكتب وفقًا لواجهة برمجة التطبيقات ، العملية العامة هي:
استخدم نوع المعلمة للطريقة لتحديد طريقة فريدة ، استنادًا إلى: التحميل الزائد للأسلوب
انعكاس المصفوفات
يوضح المثال التالي بشكل أساسي عدة نقاط:
الفئة العامة تعكس {public static void main (string [] args) {int [] a1 = new int [] {1،2،3} ؛ int [] a2 = new int [5] ؛ int [] [] a3 = new int [2] [3] ؛ system.out.println (a1.getClass () == a2.getClass ()) ؛ // true system.out.println (a1.getclass ()) ؛ // class [i system.out.println (a3getclass ()) ؛ A3.GetClass (). getSuperClass ()) ؛ // true system.out.println (a2.getClass (). getSuperClass ()) ؛ // class java.lang.object // لا يتم تجميع الجملة التالية: خطأ: (15 ، 42) java: أنواع غير قابلة للشفاء: java.lang.class <captater#1 ،؟ يمتد int []> و java.lang.class <capture#2 ، المجموع؟ يمتد int []] Object [] B3 = A3 ؛ // تم تجميعها بواسطة // الجملة التالية لا تمر خطأ: (17 ، 24) Java: النوع غير المتوافق: لا يمكن تحويل int [] إلى java.lang.object [] // Object [] B1 = A1 ؛ السلسلة S1 = "ABC" ؛ System.out.println (Arrays.aslist (a1)) ؛ // [[i@1540e19d] system.out.println (arrays.aslist (s1)) ؛ // [abc]}}الإخراج:
trueclass [iClass [[itrueclass java.lang.object [[i@1540e19d] [ABC]
الإدخال: مشكلة Hashcode و Memory Risply ، يرجى الرجوع إلى Java API:
إذا تغير المتغير العضو المشارك في حساب Hascode في الوسط ، فإن الإزالة اللاحقة تفشل ، مما يؤدي إلى تسرب الذاكرة
تحميل ملف التكوين
يقوم جهاز تحميل الفئة بتحميل اسم فئة ملف التكوين للقراءة فقط.
اسم الفصل. cclass.getResourCeasStream (STR) ، يدعو بشكل أساسي إلى تحميل الفصل. اعتراض رمز المصدر (class.java ضمن حزمة java.lang):
public inputstream getResourCeasStream (اسم السلسلة) {name = resolvename (name) ؛ classloader cl = getClassLoader0 () ؛ if (cl == null) {// a system class. return classloader.getSystemResourCeasStream (name) ؛ } إرجاع cl.getResourCeasStream (name) ؛}فيما يتعلق بالمسار ، فإن طريقة الكتابة خاصة بعض الشيء.
في الماضي ، عند تجميع كود Java ، كان لا بد من إضافة بعض المجلدات إلى التبعيات أو تمييزها كمجلدات للمصدر. من الواضح أنهم كانوا ملفات XML ، ولكن لم يكن هناك رمز مصدر Java. من هنا ، أعرف الآن أنه بسبب استخدام الانعكاس لتحميل ملف التكوين
المفتش وجافابان
عملية جافابان قراءة قيمة السمة X: الرسملة ، البادئة ، والأساليب.
"X"-> "X"-> "getx"-> "MethodGetX"
لم أستخدمها لتشغيلها بنفسي مع التأمل في الوقت الحالي ، لذلك لن ألصق الرمز بعد الآن ، ففئة أساسية فقط متصلة
تطبيق بسيط: استخدم فئة Java.beans.PropertyDescriptor
تنفيذ المشاكل: استخدم فئة java.beans.introspector لتجاوز قيمة الإرجاع لطريقة getBeanInfo
يجب أن يكون لدى Javabean مُنشئًا بدون معلمات
باستخدام مجموعة أدوات BeanUtils