একটি মার্কার ইন্টারফেস জাভাতে একটি বিশেষ লেবেলের মতো যা আমরা সিস্টেমকে কিছু বলার জন্য একটি ক্লাসে রাখতে পারি। যেমন আমরা বক্সে কী আছে বা কন্টেইনারে কোন ধরনের খাবার আছে তা জানার জন্য লেবেল ব্যবহার করি, তেমনি আমরা জাভাকে একটি ক্লাস সম্পর্কে বিশেষ কিছু বলার জন্য মার্কার ইন্টারফেস ব্যবহার করতে পারি।
উদাহরণস্বরূপ, যদি আমাদের এমন একটি ক্লাস থাকে যার একটি কপি করতে চাই, তাহলে আমরা ক্লাসে Cloneable নামে একটি মার্কার ইন্টারফেস যুক্ত করতে পারি। এটি জাভাকে জানায় যে ক্লাসের কপি করা ঠিক আছে। একইভাবে, যদি আমাদের এমন একটি ক্লাস থাকে যা আমরা একটি ফাইলে সংরক্ষণ করতে বা ইন্টারনেটে পাঠাতে চাই, তাহলে আমরা ক্লাসে Serializable নামে একটি মার্কার ইন্টারফেস যুক্ত করতে পারি। এটি জাভাকে জানায় যে ক্লাসটি সংরক্ষণ করা বা পাঠানো যায়।
সাধারণভাবে, মার্কার ইন্টারফেসগুলি দরকারী যখন আমরা ক্লাসে মেটাডেটা সংযুক্ত করতে চাই যা অন্য উপায়ে প্রকাশ করা যায় না, যেমন ক্লাসে পদ্ধতি বা ক্ষেত্র যোগ করে। একটি মার্কার ইন্টারফেস বাস্তবায়ন করে, একটি ক্লাস সিস্টেমের অন্যান্য অংশকে জানাতে পারে যে এর কিছু বিশেষ আচরণ বা বৈশিষ্ট্য রয়েছে যা বিবেচনায় নেওয়া উচিত।
public interface Cloneable {
}
public class Person implements Cloneable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
Person person1 = new Person("Alice", 25);
Person person2 = (Person) person1.clone();
List people = new ArrayList<>();
people.add(new Person("Alice", 25));
people.add(new Person("Bob", 30));
List peopleCopy = new ArrayList<>();
for (Person person : people) {
peopleCopy.add((Person) person.clone());
}
0 Comments