【发布时间】:2014-09-02 04:04:56
【问题描述】:
当我在 groovy 控制台中执行以下代码时,我得到一个 groovy.lang.ReadOnlyPropertyException。正如预期的那样,属性 x 应该无法更改(因为 ClassA 是不可变的)。
import groovy.transform.Immutable
@Immutable class ClassA {
int x
}
def a = new ClassA(x: 5);
a.x = 1
但是如果将 x 变量的访问修饰符更改为私有,那么我可以在 groovy 控制台中执行此操作:
import groovy.transform.Immutable
@Immutable class ClassA {
private int x
}
def a = new ClassA(x: 5);
a.x = 1
println(a.x)
这是为什么?为什么添加的private 访问修饰符会使ClassA 可变?
【问题讨论】:
标签: groovy