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

2022-09-03 14:26:00

如果我有一个类,里面有一个这样的内类:

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呢?


答案 1

我让它像这样工作:

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

也像这样:

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

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


答案 2

试试这个

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

推荐