Class Object এর মাধ্যমে Class Information Access করা

Class ক্লাস এবং এর ভূমিকা - জাভা রিফ্লেক্ট প্যাকেজ (Java.reflect Package) - Java Technologies

314

জাভার java.lang.reflect প্যাকেজটি আপনাকে রানটাইমে ক্লাসের তথ্য (Class Information) অ্যাক্সেস করতে সাহায্য করে। এটি রিফ্লেকশন প্রযুক্তির অংশ, যার মাধ্যমে আপনি কোনো ক্লাস বা অবজেক্টের স্ট্রাকচার, মেথড, ফিল্ড, কনস্ট্রাক্টর ইত্যাদি সম্পর্কে জানার পাশাপাশি, সেগুলির মান বা কার্যকারিতা পরিবর্তনও করতে পারেন।

এখানে আমরা আলোচনা করব কীভাবে Class Object এর মাধ্যমে ক্লাসের তথ্য অ্যাক্সেস করা যায়।

Class অবজেক্টের মাধ্যমে ক্লাসের তথ্য অ্যাক্সেস:

জাভায় Class ক্লাসটি একটি অবজেক্টের টাইপ বা ক্লাসের মেটাডেটা নিয়ে কাজ করার জন্য ব্যবহৃত হয়। আপনি Class অবজেক্ট ব্যবহার করে একটি ক্লাসের নাম, ফিল্ড, মেথড, কনস্ট্রাক্টর ইত্যাদি সম্পর্কে তথ্য পেতে পারেন।

Class ক্লাসের প্রধান মেথডগুলো:

  1. getName(): ক্লাসের পূর্ণ নাম (fully qualified name) প্রদান করে।
  2. getSuperclass(): বর্তমান ক্লাসের সুপারক্লাস (superclass) প্রদান করে।
  3. getDeclaredMethods(): ক্লাসের সমস্ত মেথড (public, private, protected) প্রদান করে।
  4. getDeclaredFields(): ক্লাসের সমস্ত ফিল্ড (public, private, protected) প্রদান করে।
  5. getConstructors(): ক্লাসের সমস্ত কনস্ট্রাক্টর প্রদান করে।
  6. isInterface(): নির্ধারণ করে যে ক্লাসটি একটি ইন্টারফেস কিনা।

Class Object এর মাধ্যমে ক্লাসের তথ্য অ্যাক্সেসের উদাহরণ:

import java.lang.reflect.*;

class Example {
    private String message;

    public Example(String message) {
        this.message = message;
    }

    public void displayMessage() {
        System.out.println(message);
    }

    private void secretMethod() {
        System.out.println("This is a secret method.");
    }
}

public class ClassInformationExample {
    public static void main(String[] args) throws Exception {
        // Example ক্লাসের Class Object পেতে
        Class<?> cls = Class.forName("Example");

        // ক্লাসের নাম পাওয়া
        System.out.println("Class Name: " + cls.getName());

        // সুপারক্লাস পাওয়া
        Class<?> superclass = cls.getSuperclass();
        System.out.println("Superclass: " + superclass.getName());

        // সকল ডিক্লেয়ার্ড মেথড পাওয়া
        Method[] methods = cls.getDeclaredMethods();
        System.out.println("Methods in Example class:");
        for (Method method : methods) {
            System.out.println(method.getName());
        }

        // সকল ডিক্লেয়ার্ড ফিল্ড পাওয়া
        Field[] fields = cls.getDeclaredFields();
        System.out.println("Fields in Example class:");
        for (Field field : fields) {
            System.out.println(field.getName());
        }

        // সকল কনস্ট্রাক্টর পাওয়া
        Constructor<?>[] constructors = cls.getConstructors();
        System.out.println("Constructors in Example class:");
        for (Constructor<?> constructor : constructors) {
            System.out.println(constructor.getName());
        }

        // private মেথড অ্যাক্সেস করার উদাহরণ
        Method secretMethod = cls.getDeclaredMethod("secretMethod");
        secretMethod.setAccessible(true); // private মেথড অ্যাক্সেস করা
        secretMethod.invoke(cls.getDeclaredConstructor(String.class).newInstance("Hello, Reflection!"));
    }
}

কোডের ব্যাখ্যা:

  1. Class.forName("Example"):
    • Class.forName() মেথডটি ক্লাসের নাম (String) দিয়ে একটি Class অবজেক্ট প্রদান করে।
  2. cls.getName():
    • এটি Example ক্লাসের পুরো নামটি (fully qualified name) রিটার্ন করবে, যেমন Example
  3. cls.getSuperclass():
    • Example ক্লাসের সুপারক্লাস (যদি থাকে) রিটার্ন করবে।
  4. cls.getDeclaredMethods():
    • এটি Example ক্লাসের সমস্ত ডিক্লেয়ারড মেথড (public, private, protected) রিটার্ন করবে।
  5. cls.getDeclaredFields():
    • Example ক্লাসের সকল ফিল্ডের নাম রিটার্ন করবে, এমনকি private ফিল্ডও।
  6. cls.getConstructors():
    • ক্লাসের কনস্ট্রাক্টরগুলোর তথ্য রিটার্ন করবে।
  7. secretMethod.setAccessible(true):
    • এটি private মেথড অ্যাক্সেস করার জন্য ব্যবহার করা হয়। setAccessible(true) মেথডটি private এবং protected সদস্যগুলোর অ্যাক্সেস খুলে দেয়।

আউটপুট:

Class Name: Example
Superclass: java.lang.Object
Methods in Example class:
displayMessage
secretMethod
Fields in Example class:
message
Constructors in Example class:
Example
This is a secret method.

Class অবজেক্টের মাধ্যমে জাভায় রিফ্লেকশন ব্যবহার করে আপনি ক্লাসের বিভিন্ন ধরনের তথ্য (যেমন মেথড, ফিল্ড, কনস্ট্রাক্টর) অ্যাক্সেস করতে পারেন। এটি এমন পরিস্থিতিতে সহায়ক যখন আপনি রানটাইমে ক্লাসের সাথে কাজ করতে চান, তবে এটি সাবধানে ব্যবহৃত হওয়া উচিত, কারণ এটি পারফরম্যান্স এবং সিকিউরিটির সমস্যা সৃষ্টি করতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...