groovy语言错误

groovy语言错误,groovy,Groovy,在Groovy控制台中,执行以下代码时不会出错: class F { private def getFoo() {"foo"} private def barValue = "bar" } def f = new F() assert f.barValue == "bar" assert f.properties.containsKey("foo") 这意味着: 可以访问类之外的类的私有成员 类的属性派生自私有(和公共)getter/setter方法 在我看来,这两个都是非常严重

在Groovy控制台中,执行以下代码时不会出错:

class F {
  private def getFoo() {"foo"}
  private def barValue = "bar"
}

def f = new F()
assert f.barValue == "bar"
assert f.properties.containsKey("foo")
这意味着:

  • 可以访问类之外的类的私有成员
  • 类的属性派生自私有(和公共)getter/setter方法
在我看来,这两个都是非常严重的语言错误。尽管我真的很喜欢Groovy,但我发现一种已经存在了相当长时间的语言,却没有正确地实现隐私概念这样的基本概念,这令人难以置信

这些是真的bug还是我遗漏了什么

谢谢,
可悲的是,这是故意的。这改变了1.5。不幸的是,为了支持它们的闭包机制和元对象协议,它们必须访问私有成员


这篇文章解释得更透彻一点:

我意识到这是一个老生常谈的答案,但我似乎无法让链接发挥作用。它被移动了吗?