ইমিউটেবল অবজেক্ট: একবার তৈরি হলে স্টেট পরিবর্তন করা যায় না (যেমন String, Wrapper ক্লাস)। থ্রেড-সেফ, final ক্লাস হিসেবে ডিক্লেয়ার করা হয়।
মিউটেবল অবজেক্ট: স্টেট পরিবর্তন করা যায় (সেটার মেথড থাকে)। ডিফল্টভাবে সব ক্লাস মিউটেবল। থ্রেড-সেফ নয়।
| ক্র. নং | বিষয় | মিউটেবল | ইমিউটেবল |
|---|---|---|---|
| ১ | স্টেট পরিবর্তন | সম্ভব | সম্ভব নয় |
| ২ | থ্রেড সেফটি | নয় | হ্যাঁ |
| ৩ | final ক্লাস | নয় | হ্যাঁ (বাধ্যতামূলক) |
| ৪ | উদাহরণ | সাধারণ ক্লাস (Setter সহ) | String, Integer, Double ইত্যাদি |
ইমিউটেবল ক্লাস উদাহরণ
public final class ImmutableClass {
private final String laptop;
public ImmutableClass(String laptop) { this.laptop = laptop; }
public String getLaptop() { return laptop; }
}
public class Main {
public static void main(String[] args) {
ImmutableClass obj = new ImmutableClass("Dell");
System.out.println(obj.getLaptop()); // Dell
}
}
মিউটেবল ক্লাস উদাহরণ
public class MutableClass {
private String laptop;
public MutableClass(String laptop) { this.laptop = laptop; }
public String getLaptop() { return laptop; }
public void setLaptop(String laptop) { this.laptop = laptop; }
}
public class Main {
public static void main(String[] args) {
MutableClass obj = new MutableClass("Dell");
System.out.println(obj.getLaptop()); // Dell
obj.setLaptop("IBM");
System.out.println(obj.getLaptop()); // IBM
}
}