groovy中的私有方法不是私有的

ani*_*ish 17 groovy private private-members

class A {
    private def sayHello() {
       println "Anish"
    } 
 }

 def a_obj = new A()
 a_obj.sayHello()
Run Code Online (Sandbox Code Playgroud)

输出: Anish

有没有什么方法可以保护sayHello()groovy或我错过了什么?

And*_*ich 19

缺陷的,在Groovy的问题跟踪系统和缺陷仍然是开放的.


tim*_*tes 9

正在搜索[groovy] private显示:

在Java超类中使用groovy调用私有方法

什么'私人'在Groovy中意味着什么?

如何在Groovy Bean中定义私有getter方法?

目前尚不清楚它是一个bug还是设计,但它将在Groovy 2.0中重新审视

  • @kadaj现在计划查看groovy 3 ;-) (3认同)

Jas*_*son 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')

    }
}
Run Code Online (Sandbox Code Playgroud)