في Java ، هناك طريقتان لاستدعاء طريقة الفصل: للطرق الثابتة ، يمكنك استدعاء اسم الفصل مباشرة ، وللطرق غير الستاطية ، يجب عليك استخدام مكالمة كائن الفئة. توفر آلية الانعكاس طريقة بديلة نسبيًا للاتصال ، والتي يمكن أن تحدد الطريقة التي سيتم استدعاؤها حسب الحاجة دون الحاجة إلى تحديدها أثناء البرمجة. لا تقتصر الطريقة التي تسمى على الأماكن العامة ، ولكن يمكن أن تكون خاصة أيضًا. اكتب برنامجًا يستخدم آلية الانعكاس لاستدعاء الطريقة الثابتة SIN () والطريقة غير الستاطية تساوي () فئة الرياضيات.
الفكرة هي كما يلي: استخدم Math.class.getDeclaredMethod ("Sin" ، double.type) ؛ نوع معلمة الدخول مزدوجة.
الرمز كما يلي:
نسخة الكود كما يلي:
استيراد java.lang.reflect.method ؛
الطبقة العامة Dongtai {
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
يحاول {
System.out.println ("استدعاء الطريقة الثابتة sin () من فئة الرياضيات") ؛
طريقة sin = math.class.getDeclaredMethod ("sin" ، double.type) ؛
double sin1 = (double) sin.invoke (null ، integer (1)) ؛
System.out.println ("قيمة الجيب 1 هي:" + sin1) ؛
System.out.println ("استدعاء الطريقة غير الستنية متساوية () من فئة السلسلة") ؛
الطريقة يساوي = string.class.getDeclaredMethod ("equals" ، object.class) ؛
Boolean Mrsoft = (Boolean) equals.invoke (سلسلة جديدة ("Tomorrow Technology") ، "Tomorrow Technology") ؛
System.out.println ("IS the String Tomorrow Technology:" + mrsoft) ؛
} catch (استثناء e) {
E.PrintStackTrace () ؛
}
}
}
يظهر التأثير في الصورة: