如何从 Groovy 构建(非静态)Java 内部 class

How do I construct a (non-static) Java inner class from Groovy

如果我有一个 class,内部 class 是这样的:

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

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

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

但在 Groovy 中,这是行不通的。那么我如何构建一个新的 B [来自同一包中的 groovy class]?

试试这个

    A a = new A();
    System.out.println(new B(a, "test")); //crazy syntax!

我是这样工作的:

def a = new A()
A.B.newInstance(a, "foo")

还有这样的:

def a = new A()
new A.B(a, "foo")

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