परिचय
Java में, इम्यूटेबल ऑब्जेक्ट की स्थिति को बनने के बाद संशोधित नहीं किया जा सकता लेकिन निश्चित रूप से अन्य ऑब्जेक्ट्स को संदर्भित कर सकता है। वे मल्टीथ्रेडिंग वातावरण में बहुत उपयोगी हैं क्योंकि कई थ्रेड्स ऑब्जेक्ट की स्थिति को नहीं बदल सकते इसलिए इम्यूटेबल ऑब्जेक्ट्स थ्रेड-सेफ होते हैं। इम्यूटेबल ऑब्जेक्ट्स टेम्पोरल कपलिंग से बचने और हमेशा फेल्योर एटॉमिसिटी रखने में बहुत मददगार होते हैं।
दूसरी ओर, म्यूटेबल ऑब्जेक्ट्स में ऐसे फील्ड्स होते हैं जिन्हें बदला जा सकता है, इम्यूटेबल ऑब्जेक्ट्स में ऐसा कोई फील्ड नहीं होता जिसे ऑब्जेक्ट बनने के बाद बदला जा सके।
| क्र. सं. | मुख्य बिंदु | म्यूटेबल ऑब्जेक्ट | इम्यूटेबल ऑब्जेक्ट |
|---|---|---|---|
| 1 | बुनियादी | हम बनने के बाद म्यूटेबल ऑब्जेक्ट की स्थिति को संशोधित कर सकते हैं | हम ऑब्जेक्ट बनने के बाद उसकी स्थिति को संशोधित नहीं कर सकते। |
| 2 | थ्रेड-सेफ | म्यूटेबल ऑब्जेक्ट्स थ्रेड-सेफ नहीं हैं | इम्यूटेबल ऑब्जेक्ट्स थ्रेड-सेफ हैं। |
| 3 | फाइनल | म्यूटेबल क्लास फाइनल नहीं हैं | इम्यूटेबल ऑब्जेक्ट बनाने के लिए, क्लास को फाइनल बनाएं |
| 4 | उदाहरण | डिफ़ॉल्ट रूप से सभी क्लास और उसके ऑब्जेक्ट प्रकृति में म्यूटेबल होते हैं। | String और सभी वॉपर क्लास इम्यूटेबल क्लास के उदाहरण हैं |
इम्यूटेबल क्लास का उदाहरण
public final class ImmutableClass {
private String laptop;
public String getLaptop() {
return laptop;
}
public ImmutableClass(String laptop) {
super();
this.laptop = laptop;
}
}
public class Main {
public static void main(String args[]) {
ImmutableClass immutableClass = new ImmutableClass("Dell");
System.out.println(immutableClass.getLaptop());
}
}म्यूटेबल क्लास का उदाहरण
public class MutableClass {
private String laptop;
public String getLaptop() {
return laptop;
}
public void setLaptop(String laptop) {
this.laptop = laptop;
}
public MutableClass(String laptop) {
super();
this.laptop = laptop;
}
}
public class Main {
public static void main(String args[]) {
MutableClass mutableClass = new MutableClass("Dell");
System.out.println(mutableClass.getLaptop());
mutableClass.setLaptop("IBM");
System.out.println(mutableClass.getLaptop());
}
}