在Groovy控制台中,以下代码执行时没有错误:
class F {
private def getFoo() {"foo"}
private def barValue = "bar"
}
def f = new F()
assert f.barValue == "bar"
assert f.properties.containsKey("foo")
这意味着:
在我看来,这些都是非常严重的语言错误。虽然我非常喜欢Groovy,但我觉得这种语言已经存在了相当长的时间,并没有像正确的隐私概念那样实现基本的东西。
这些实际上是错误还是我错过了什么?
谢谢, 唐
答案 0 :(得分:4)
这是故意的,可悲的。这改变了1.5。不幸的是,为了支持它们的闭包机制及其元对象协议,它们必须能够访问私有成员。
本文更全面地解释了:http://www.benjaminbooth.com/tableorbooth/2008/07/groovy-15-no-private-for-you.html