जब मैं ग्रोवी कंसोल में नीचे दिए गए कोड को निष्पादित करता हूं, तो मुझे groovy.lang.ReadOnlyPropertyException
मिलता है। जैसा कि अपेक्षित है कि संपत्ति एक्स को बदलने के लिए संभव नहीं होना चाहिए (ClassA
अपरिवर्तनीय है)।ग्रोवी में @Imututable कैसे काम करता है?
import groovy.transform.Immutable
@Immutable class ClassA {
int x
}
def a = new ClassA(x: 5);
a.x = 1
लेकिन अगर परिवर्तन x
चर के लिए निजी के लिए उपयोग संशोधक, तो मैं ग्रूवी कंसोल में इस पर अमल कर सकते हैं:
import groovy.transform.Immutable
@Immutable class ClassA {
private int x
}
def a = new ClassA(x: 5);
a.x = 1
println(a.x)
ऐसा क्यों है? जोड़ा गया private
एक्सेस संशोधक ClassA
उत्परिवर्तनीय क्यों बनाता है?