相关疑难解决方法(0)

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

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

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

输出: Anish

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

groovy private private-members

17
推荐指数
3
解决办法
2万
查看次数

仅使用来自 groovy 中另一个类的私有构造函数的类的实例化

我有如下场景,其中有一个World类只有一个私有构造函数和另一个类App

正如代码所示,一个新的实例World可以创建内部App类,尽管只有私有构造的World

在Java中是禁止的,我认为在groovy中也是禁止的,但是App运行没有任何错误。

// World.groovy
class World {
    private World() {
    }
}

// App.groovy
class App {
    static void main(String[] args) {
    def world = new World()
    println world
}
Run Code Online (Sandbox Code Playgroud)

我无法理解在 groovy 中怎么可能。另一个类如何在 groovy 中实例化一个只有私有构造函数的类?

java groovy access-modifiers

5
推荐指数
1
解决办法
1423
查看次数

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

我有一个MyAbstractClass带私有方法的抽象Java类.有一个具体的实施MyConcreteClass.

public class MyAbstractClass {
    private void somePrivateMethod();
}

public class MyConcreteClass extends MyAbstractClass {
      // implementation details
}
Run Code Online (Sandbox Code Playgroud)

在我的常规测试课中,我有

class MyAbstractClassTest {

    void myTestMethod() {
        MyAbstractClass mac = new MyConcreteClass()
        mac.somePrivateMethod()
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到一个错误,即somePrivateMethod没有这样的方法签名.我知道groovy可以调用私有方法,但我猜测问题是私有方法是在超类中,而不是MyConcreteClass.有没有办法像这样调用超类中的私有方法(除了使用像PrivateAccessor这样的东西)?

谢谢Jeff

java methods groovy private

4
推荐指数
1
解决办法
6780
查看次数