Po uruchomieniu poniższego kodu w konsoli groovy otrzymuję groovy.lang.ReadOnlyPropertyException
. Co jest zgodne z oczekiwaniami, ponieważ właściwość x nie powinna być możliwa do zmiany (ponieważ ClassA
jest niezmienna).Jak działa @Immutable w groovy?
import groovy.transform.Immutable
@Immutable class ClassA {
int x
}
def a = new ClassA(x: 5);
a.x = 1
Ale jeśli zmiana modyfikator dostępu do prywatnych dla zmiennej x
, to mogę wykonać to w konsoli: groovy
import groovy.transform.Immutable
@Immutable class ClassA {
private int x
}
def a = new ClassA(x: 5);
a.x = 1
println(a.x)
dlaczego tak jest? Dlaczego dodany modyfikator dostępu private
powoduje, że ClassA
zmienia się?