Как создать (нестатический) внутренний класс Java из Groovy

Если у меня есть класс с внутренним классом, например:

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 в том же пакете]?

Ответ 1

У меня это получилось так:

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

А также вот так:

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

Если код Java находится под вашим контролем, а не является внешней библиотекой, я бы скорее использовал метод factory.

Ответ 2

попробуйте это

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