دستگرمی
دستگرمی سیزدهم
دستگرمی این هفته:
کد زیر را در نظر بگیرید:
package ir.javacup; import java.lang.reflect.Constructor; import java.lang.reflect.Field; class MyClass{ String name; public MyClass(String name) { this.name = name; } public String getName() { return name; } } public class ReflectionMethods { public static void main(String[] args) throws Exception { Class c = Class.forName("ir.javacup.MyClass"); Constructor constructor = c.getConstructor(String.class); MyClass instance = (MyClass) constructor.newInstance("Naser"); Field field = instance.getClass().getDeclaredField("name"); field.set(instance, "Nader"); System.out.println(instance.getName()); } }
با توجه به اینکه کلاس MyClass در بسته ir.javacup قرار دارد، خروجی کد فوق کدام گزینه است؟
- Nader (90%, 9 رای)
- Naser (10%, 1 رای)
- name (0%, 0 رای)
- ReflectionMethods (0%, 0 رای)
- ir.asta.javacup.sadegh.MyClass (0%, 0 رای)
- Naser name (0%, 0 رای)
- Nader name (0%, 0 رای)
- Naser Nader (0%, 0 رای)
- MyClass (0%, 0 رای)
مجموع رای ها: 10
Loading ...
پاسخ:
پاسخ صحیح: Nader
در خط سوم متد main، یک نمونه از کلاس MyClass ساخته میشود و همزمان، متغیر name با “Naser” مقداردهی میشود.
سپس به متغیر name دسترسی پیدا میکنیم مقدارش را با “Nader” مقداردهی میکنیم. به این ترتیب، در خط آخر متد main، با دسترسی به متغیر name از نمونه ساختهشده از کلاس MyClass، مقدار “Nader” چاپ خواهد شد.
.
.
.
با ما همراه باشید
آدرس کانال تلگرام: JavaCupIR@
آدرس اکانت توییتر: JavaCupIR@
آدرس صفحه اینستاگرام: javacup.ir
آدرس گروه لینکدین: Iranian Java Developers