class A {
private def sayHello() {
println "Anish"
}
}
def a_obj = new A()
a_obj.sayHello()
输出:Anish
有没有办法在常规中保护sayHello()
或者我遗失了什么?
答案 0 :(得分:18)
在Groovy问题跟踪系统中有defect,该缺陷仍然存在。
答案 1 :(得分:9)
搜索[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?
目前尚不清楚它是否是一个bug或设计,但它将在Groovy 2.0中重新审视
答案 2 :(得分:7)
您可以使用闭包来实现类似的效果,基本上与使用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')
}
}
答案 3 :(得分:3)
我认为它是groovy中的一个错误,在groovy ++中修复。
答案 4 :(得分:1)
正如其他帖子所提到的,这可能是Groovy中的一个错误。我一直坚持使用前导下划线(类似于Python)为私有成员名称添加前缀的简单约定,以表示它是私有的,这有助于我从客户端角度理解我应该调用什么。< / p>