دستگرمی

دستگرمی سیزدهم

دستگرمی این هفته:

کد زیر را در نظر بگیرید:

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 ... Loading ...

پاسخ:

پاسخ صحیح: Nader

در خط سوم متد main، یک نمونه از کلاس MyClass ساخته می‎شود و هم‌زمان، متغیر name با “Naser” مقداردهی می‌شود.

سپس به متغیر name دسترسی پیدا می‎کنیم مقدارش را با “Nader” مقداردهی می‎کنیم. به این ترتیب، در خط آخر متد main، با دسترسی به متغیر name از نمونه ساخته‌شده از کلاس MyClass، مقدار “Nader” چاپ خواهد شد.

.

.

.

با ما همراه باشید

آدرس کانال تلگرام: JavaCupIR@

آدرس اکانت توییتر: JavaCupIR@

آدرس صفحه اینستاگرام: javacup.ir

آدرس گروه لینکدین: Iranian Java Developers

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا