Parameterized Constructor এর মাধ্যমে Object তৈরি

Constructors এর মাধ্যমে Object Creation - জাভা রিফ্লেক্ট প্যাকেজ (Java.reflect Package) - Java Technologies

251

Java রিফ্লেকশন প্যাকেজ (java.lang.reflect) আপনাকে একটি ক্লাসের কনস্ট্রাক্টর (constructor) সম্পর্কে তথ্য জানাতে এবং সেই কনস্ট্রাক্টর ব্যবহার করে ডাইনামিকভাবে অবজেক্ট তৈরি করতে সহায়তা করে। এই প্রক্রিয়ায়, আপনি parameterized constructor এর মাধ্যমে অবজেক্ট তৈরি করতে পারেন, যা কনস্ট্রাক্টরে কিছু প্যারামিটার নেয়।

রিফ্লেকশন ব্যবহার করে parameterized constructor এর মাধ্যমে অবজেক্ট তৈরি করতে আপনাকে নিম্নলিখিত ধাপগুলো অনুসরণ করতে হবে:

  1. Class অবজেক্ট পাওয়া: প্রথমে আপনাকে যে ক্লাসের কনস্ট্রাক্টর ব্যবহার করতে চান, তার Class অবজেক্ট পেতে হবে।
  2. Constructor অবজেক্ট পাওয়া: তারপর getConstructor() বা getDeclaredConstructor() মেথড ব্যবহার করে parameterized constructor অ্যাক্সেস করতে হবে।
  3. Object Creation: অবশেষে, newInstance() মেথড ব্যবহার করে কনস্ট্রাক্টরের মাধ্যমে অবজেক্ট তৈরি করতে হবে।

কোড উদাহরণ:

ধরা যাক, আমাদের একটি Person ক্লাস রয়েছে যা দুটি প্যারামিটার নেয় (একটি String এবং একটি int)।

import java.lang.reflect.*;

class Person {
    private String name;
    private int age;

    // Parameterized constructor
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void displayInfo() {
        System.out.println("Name: " + name + ", Age: " + age);
    }
}

public class ReflectionConstructorExample {
    public static void main(String[] args) throws Exception {
        // Person ক্লাসের Class অবজেক্ট পাওয়া
        Class<?> cls = Class.forName("Person");

        // Parameterized constructor অ্যাক্সেস করা
        Constructor<?> constructor = cls.getConstructor(String.class, int.class);

        // constructor.newInstance() ব্যবহার করে Object তৈরি
        Person person = (Person) constructor.newInstance("John", 25);

        // অবজেক্টের মেথড কল করা
        person.displayInfo();  // Output: Name: John, Age: 25
    }
}

ব্যাখ্যা:

  1. Class অবজেক্ট পাওয়া:
    • Class.forName("Person") ব্যবহার করে Person ক্লাসের Class অবজেক্ট পাওয়া গেছে। এটি ক্লাসের মেটাডেটা (metadata) অ্যাক্সেস করতে সাহায্য করে।
  2. Parameterized Constructor অ্যাক্সেস:
    • cls.getConstructor(String.class, int.class) ব্যবহার করে Person ক্লাসের parameterized কনস্ট্রাক্টরটি পাওয়া হয়েছে, যেটি একটি String এবং একটি int প্যারামিটার নেয়।
  3. Object Creation:
    • constructor.newInstance("John", 25) ব্যবহার করে আমরা Person ক্লাসের একটি অবজেক্ট তৈরি করেছি, যেখানে "John" এবং 25 প্যারামিটার হিসেবে পাস করা হয়েছে।
  4. Method Invocation:
    • অবজেক্ট তৈরি হওয়ার পর, person.displayInfo() কল করে তার তথ্য প্রিন্ট করা হয়েছে।

আরো কিছু মন্তব্য:

  • Parameterized Constructor: যদি আপনার কনস্ট্রাক্টর একাধিক প্যারামিটার নেয়, আপনি সেই প্যারামিটারগুলোর টাইপ উল্লেখ করে getConstructor() মেথড ব্যবহার করতে পারেন। এর মাধ্যমে আপনি সঠিক কনস্ট্রাক্টরটি অ্যাক্সেস করতে পারবেন।
  • Accessing Private Constructors: আপনি যদি প্রাইভেট কনস্ট্রাক্টর অ্যাক্সেস করতে চান, তবে getDeclaredConstructor() ব্যবহার করুন এবং পরে setAccessible(true) মেথডের মাধ্যমে কনস্ট্রাক্টরটিকে অ্যাক্সেসযোগ্য করুন।

প্রাইভেট কনস্ট্রাক্টর অ্যাক্সেস করার উদাহরণ:

class Person {
    private String name;
    private int age;

    // Private constructor
    private Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void displayInfo() {
        System.out.println("Name: " + name + ", Age: " + age);
    }
}

public class ReflectionPrivateConstructorExample {
    public static void main(String[] args) throws Exception {
        // Person ক্লাসের Class অবজেক্ট পাওয়া
        Class<?> cls = Class.forName("Person");

        // Private parameterized constructor অ্যাক্সেস করা
        Constructor<?> constructor = cls.getDeclaredConstructor(String.class, int.class);
        constructor.setAccessible(true);  // প্রাইভেট কনস্ট্রাক্টর অ্যাক্সেস করার জন্য

        // constructor.newInstance() ব্যবহার করে Object তৈরি
        Person person = (Person) constructor.newInstance("John", 25);

        // অবজেক্টের মেথড কল করা
        person.displayInfo();  // Output: Name: John, Age: 25
    }
}

Java রিফ্লেকশন ব্যবহার করে parameterized constructor এর মাধ্যমে অবজেক্ট তৈরি করা সম্ভব। Class.forName() এবং getConstructor() মেথড ব্যবহার করে আপনি কনস্ট্রাক্টর অ্যাক্সেস করতে পারেন, এবং newInstance() মেথড দিয়ে অবজেক্ট তৈরি করতে পারেন। এটি আপনাকে ডাইনামিকভাবে ক্লাসের কনস্ট্রাক্টরের মাধ্যমে অবজেক্ট তৈরি করতে সক্ষম করে।

Content added By
Promotion

Are you sure to start over?

Loading...