在 Groovy 控制台中,以下代码执行没有错误:
class F {
private def getFoo() {"foo"}
private def barValue = "bar"
}
def f = new F()
assert f.barValue == "bar"
assert f.properties.containsKey("foo")
Run Code Online (Sandbox Code Playgroud)
这意味着:
在我看来,这两个都是极其严重的语言错误。尽管我真的很喜欢 Groovy,但我觉得不可思议的是,一种已经存在了相当长一段时间的语言,却没有正确地实现像隐私概念这样基本的东西。
这些实际上是错误还是我遗漏了什么?
谢谢,唐
可悲的是,这是故意的。这在 1.5 中发生了变化。不幸的是,为了支持他们的闭包机制和他们的元对象协议,他们必须能够访问私有成员。
这篇文章解释得更彻底一点:http : //www.benjaminbooth.com/tableorbooth/2008/07/groovy-15-no-private-for-you.html
| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |