Java Reflection API একটি শক্তিশালী টুল যা আপনাকে রানটাইমে ক্লাসের মেটাডেটা অ্যাক্সেস করার সুবিধা দেয়। এটি শুধু ক্লাসের ফিল্ড, মেথড, কনস্ট্রাক্টর ইত্যাদি অ্যাক্সেস করতে সাহায্য করে না, বরং Superclass এবং Inheritance Tree-এরও তথ্য প্রদান করতে পারে।
getSuperclass() মেথড
getSuperclass() মেথডটি একটি ক্লাসের সুপার ক্লাস (superclass) বা এর মূল শ্রেণী (parent class) সম্পর্কে তথ্য প্রদান করে। এটি Class ক্লাসের একটি মেথড যা আপনাকে একটি ক্লাসের ইনহেরিটেন্স চেইন (inheritance chain) এর প্রথম স্তর (level) পর্যন্ত জানাতে সাহায্য করে।
getSuperclass() মেথডের কার্যকারিতা:
- এই মেথডটি একটি
Classঅবজেক্ট রিটার্ন করে, যা ক্লাসটির সুপার ক্লাসকে উপস্থাপন করে। - যদি ক্লাসটির কোনো সুপার ক্লাস না থাকে (যেমন
Objectক্লাস), তবে এটিnullরিটার্ন করবে।
Syntax:
Class<?> getSuperclass()
কীভাবে getSuperclass() কাজ করে:
- Superclass:
getSuperclass()মেথডটি ক্লাসের direct parent কে রিটার্ন করে। - Inheritance Tree: আপনি একাধিক
getSuperclass()কল করে পুরো ইনহেরিটেন্স ট্রি (inheritance tree) অ্যাক্সেস করতে পারেন, অর্থাৎ আপনি দেখতে পারবেন ক্লাসটি কোথা থেকে ইনহেরিট করেছে এবং এর প্যারেন্ট ক্লাসগুলো কী।
উদাহরণ:
উদাহরণ 1: getSuperclass() ব্যবহার করে Superclass Access করা
class Animal {
public void eat() {
System.out.println("Animal is eating");
}
}
class Dog extends Animal {
public void bark() {
System.out.println("Dog is barking");
}
}
public class ReflectionExample {
public static void main(String[] args) {
Dog dog = new Dog();
// Dog ক্লাসের Superclass পাওয়া
Class<?> cls = dog.getClass();
Class<?> superclass = cls.getSuperclass();
// Superclass এর নাম প্রিন্ট করা
System.out.println("Superclass of Dog: " + superclass.getName());
}
}
কোড বিশ্লেষণ:
Dogক্লাসের একটি অবজেক্ট তৈরি করা: প্রথমেDogক্লাসের একটি অবজেক্টdogতৈরি করা হয়।getClass()মেথড:dog.getClass()ব্যবহার করে আমরাDogক্লাসেরClassঅবজেক্ট পাই।getSuperclass()মেথড:cls.getSuperclass()কল করে আমরাDogক্লাসের সুপার ক্লাস (superclass) পেয়ে যাই, যাAnimal।superclass.getName():superclass.getName()ব্যবহার করে আমরাAnimalক্লাসের নাম প্রিন্ট করি।
আউটপুট:
Superclass of Dog: Animal
উদাহরণ 2: পুরো Inheritance Tree Traversal (superclass chain)
আপনি একাধিক getSuperclass() মেথড কল করে একটি ক্লাসের ইনহেরিটেন্স ট্রি অনুসন্ধান করতে পারেন। উদাহরণস্বরূপ, Dog ক্লাসের ইনহেরিটেন্স ট্রি দেখতে চাইলে:
class Animal {
public void eat() {
System.out.println("Animal is eating");
}
}
class Dog extends Animal {
public void bark() {
System.out.println("Dog is barking");
}
}
public class InheritanceTreeExample {
public static void main(String[] args) {
Dog dog = new Dog();
// Dog ক্লাসের ইনহেরিটেন্স ট্রি ট্রাভার্স
Class<?> cls = dog.getClass();
while (cls != null) {
System.out.println("Class: " + cls.getName());
cls = cls.getSuperclass();
}
}
}
কোড বিশ্লেষণ:
dog.getClass(): প্রথমেDogক্লাসেরClassঅবজেক্ট পাওয়া যায়।while (cls != null): একটি লুপ চালিয়ে পুরো ইনহেরিটেন্স ট্রি ট্রাভার্স করা হয়। যতক্ষণ না সুপার ক্লাসnullহয়ে যায় (যতক্ষণ না আমরাObjectক্লাসে পৌঁছাই), ততক্ষণ পর্যন্তgetSuperclass()মেথড কল করা হয়।cls.getName(): প্রতিটি ক্লাসের নাম প্রিন্ট করা হয়।
আউটপুট:
Class: Dog
Class: Animal
Class: java.lang.Object
এটা কিভাবে কাজ করে?
Dogক্লাস: প্রথমেDogক্লাসের নাম প্রিন্ট করা হয়।Animalক্লাস: তারপরDogক্লাসের সুপার ক্লাসAnimalপাওয়া যায়।Objectক্লাস:Animalক্লাসের সুপার ক্লাসObject(Java-এর মূল সুপার ক্লাস) হওয়ায় এটি ট্রাভার্সের শেষ প্রান্ত।
Object ক্লাস এবং getSuperclass()
যেকোনো ক্লাসের সুপার ক্লাস শেষ পর্যন্ত Object হবে, কারণ সব ক্লাসের (যেগুলো ইউজার ডিফাইনড) Object ক্লাস থেকে ইনহেরিট করা হয়। Object ক্লাসের কোনো সুপার ক্লাস নেই, তাই getSuperclass() কল করলে এটি null রিটার্ন করবে।
উদাহরণ 3: Object ক্লাসের getSuperclass()
public class ObjectClassExample {
public static void main(String[] args) {
// Object ক্লাসের ইনহেরিটেন্স ট্রি ট্রাভার্স
Class<?> cls = Object.class;
Class<?> superclass = cls.getSuperclass();
// Object ক্লাসের Superclass প্রিন্ট করা
System.out.println("Superclass of Object: " + superclass);
}
}
কোড বিশ্লেষণ:
Object.classব্যবহার করা হয়েছে যাObjectক্লাসেরClassঅবজেক্ট প্রদান করে।getSuperclass()কল করলে এটিnullরিটার্ন করবে, কারণObjectক্লাসের কোনো সুপার ক্লাস নেই।
আউটপুট:
Superclass of Object: null
getSuperclass()মেথডটি একটি ক্লাসের সরাসরি সুপার ক্লাসের তথ্য প্রদান করে।- আপনি একাধিক
getSuperclass()কল করে ইনহেরিটেন্স ট্রি সম্পূর্ণভাবে ট্রাভার্স করতে পারেন। Objectক্লাসের সুপার ক্লাসnullরিটার্ন করে, কারণ এটি জাভার মূল ক্লাস এবং অন্য কোনো ক্লাস থেকে ইনহেরিট হয় না।- Inheritance Tree Traversal এর মাধ্যমে আপনি পুরো ইনহেরিটেন্স চেইন বা হায়ারার্কি দেখতে পারেন, যা ডিবাগিং এবং কোড বিশ্লেষণে সহায়ক হতে পারে।
Read more