【发布时间】:2011-12-12 17:38:15
【问题描述】:
class A {
private def sayHello() {
println "Anish"
}
}
def a_obj = new A()
a_obj.sayHello()
输出:Anish
有什么方法可以在 groovy 中保护sayHello() 还是我遗漏了什么?
【问题讨论】:
标签: groovy private private-members
class A {
private def sayHello() {
println "Anish"
}
}
def a_obj = new A()
a_obj.sayHello()
输出:Anish
有什么方法可以在 groovy 中保护sayHello() 还是我遗漏了什么?
【问题讨论】:
标签: groovy private private-members
Groovy 问题跟踪系统中有defect,该缺陷仍然存在。
【讨论】:
搜索[groovy] private 显示:
groovy call private method in Java super class
What does 'private' mean in Groovy?
How to define private getter method in Groovy Bean?
尚不清楚这是一个错误还是设计使然,但它会在 Groovy 2.0 中再次受到关注
【讨论】:
您可以使用闭包来实现类似的效果,基本上与使用 Javascript 进行信息隐藏的方式相同。
package test
class FunctionTests {
def privilagedObj = {
def privVar = 'foo'
def privateFunc = { x -> println "${privVar} ${x}"}
return {x -> privateFunc(x) }
}
public static void main(String[] args) {
def test = new FunctionTests().privilagedObj()
test('bar')
}
}
【讨论】:
我认为它是 groovy 中的一个错误,已在 groovy++ 中修复。
【讨论】:
正如其他帖子所提到的,这可能是 Groovy 中的一个错误。我一直坚持一个简单的约定,即在私有成员名称前加上前导下划线(类似于 Python)来表示它是私有的,这有助于我从客户端的角度理解我应该调用什么。
【讨论】: