如何从Groovy构造(非静态)Java内部类

jam*_*kie 13 java groovy inner-classes

如果我有一个像这样的内部类的类:

public class A {
    class B { //note, no modifier on class or constructor
      B(String c) {System.out.println(c);}
    }
}
Run Code Online (Sandbox Code Playgroud)

从Java(在同一个包中)我可以这样做:

public class C {
    public static void main(String[] args) {
        A a = new A();
        System.out.println(a. new B("test")); //crazy syntax!
    }
}
Run Code Online (Sandbox Code Playgroud)

但在Groovy中,这不起作用.那么如何构建一个新的B [来自同一包中的groovy类]?

Rob*_*her 12

我让它像这样工作:

def a = new A()
A.B.newInstance(a, "foo")
Run Code Online (Sandbox Code Playgroud)

还像这样:

def a = new A()
new A.B(a, "foo")
Run Code Online (Sandbox Code Playgroud)

如果Java代码在您的控制之下而不是外部库,我宁可使用工厂方法.