একটি অ্যানোনিমাস ইনার ক্লাস হলো এমন একটি ইনার ক্লাস যেটি কোনো ক্লাস নাম ছাড়া ডিক্লেয়ার করা হয়। অন্য কথায়, নামহীন ইনার ক্লাসকেই অ্যানোনিমাস ইনার ক্লাস বলা হয়। যেহেতু এর নাম নেই, তাই এর কন্সট্রাক্টর থাকতে পারে না, কারণ কন্সট্রাক্টরের নাম ক্লাসের নামের সমান হতে হয়।
আমরা new অপারেটর ব্যবহার করে একই সময়ে একটি অ্যানোনিমাস ইনার ক্লাস ডিফাইন করতে এবং এর অবজেক্ট তৈরি করতে পারি।
সিনট্যাক্স
new(argument-list){
// Anonymous class body
}
জাভাতে অ্যানোনিমাস ইনার ক্লাসের প্রকার
- একটি ক্লাস এক্সটেন্ড করে অ্যানোনিমাস ইনার ক্লাস
- একটি ইন্টারফেস ইমপ্লিমেন্ট করে অ্যানোনিমাস ইনার ক্লাস
- আর্গুমেন্ট হিসেবে অ্যানোনিমাস ইনার ক্লাস
একটি ক্লাস এক্সটেন্ড করে অ্যানোনিমাস ইনার ক্লাস
এখানে new কিওয়ার্ড ব্যবহার করে অ্যানোনিমাস ইনার ক্লাস এর একটি অবজেক্ট তৈরি করা হয় যার রেফারেন্স পেরেন্ট ক্লাস টাইপের।
উদাহরণ
class Car {
public void engineType() {
System.out.println("Turbo Engine");
}
}
public class AnonymousClassDemo {
public static void main(String args[]) {
Car c1 = new Car();
c1.engineType();
Car c2 = new Car() {
@Override
public void engineType() {
System.out.println("V2 Engine");
}
};
c2.engineType();
}
}
আউটপুট
Turbo Engine V2 Engine
একটি ইন্টারফেস ইমপ্লিমেন্ট করে অ্যানোনিমাস ইনার ক্লাস
এখানে new কিওয়ার্ড ব্যবহার করে অ্যানোনিমাস ইনার ক্লাস এর একটি অবজেক্ট তৈরি করা হয় যার রেফারেন্স একটি ইন্টারফেস টাইপের।
উদাহরণ
interface Software {
public void develop();
}
public class AnonymousClassDemo1 {
public static void main(String args[]) {
Software s = new Software() {
@Override
public void develop() {
System.out.println("Software Developed in Java");
}
};
s.develop();
System.out.println(s.getClass().getName());
}
}
আউটপুট
Software Developed in Java AnonymousClassDemo1$1
আর্গুমেন্ট হিসেবে অ্যানোনিমাস ইনার ক্লাস
আমরা অ্যানোনিমাস ইনার ক্লাস কে আর্গুমেন্ট হিসেবে ব্যবহার করতে পারি যাতে সেটি মেথড বা কন্সট্রাক্টরে পাস করা যায়।
উদাহরণ
abstract class Engine {
public abstract void engineType();
}
class Vehicle {
public void transport(Engine e) {
e.engineType();
}
}
public class AnonymousInnerClassDemo2 {
public static void main(String args[]) {
Vehicle v = new Vehicle();
v.transport(new Engine() {
@Override
public void engineType() {
System.out.println("Turbo Engine");
}
});
}
}
আউটপুট
Turbo Engine