class A {
private def sayHello() {
println "Anish"
}
}
def a_obj = new A()
a_obj.sayHello()
Run Code Online (Sandbox Code Playgroud)
输出: Anish
有没有什么方法可以保护sayHello()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 中实例化一个只有私有构造函数的类?
我有一个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