使用groovy AST Transform修改java

elh*_*oim 2 java groovy abstract-syntax-tree

是否可以使用groovy ast转换代码来操作java类?

如果是,请举个例子.

如果不是,请说明原因.

Chr*_*ail 5

是的,可以将Groovy AST Transformations与Java代码一起使用.Groovy编译为java字节码并构建在Java库上.两种语言之间的互操作性很好.

groovy网站上有一整节涉及AST转换.

以下是混合Java/Groovy应用程序的示例.您有一个标准的Java接口和实现.groovy类使用@Delegate AST转换并使用invokeMethod.

Java类:

interface IFoo {
    public String someMethod(String arg1);
}

class Foo implements IFoo {
    public String someMethod(String arg1) { 
        arg1+arg1;
    }
}
Run Code Online (Sandbox Code Playgroud)

Groovy类:

class Bar implements IFoo {
    @Delegate Foo foo = new Foo()
    def otherMethod() {
        someMethod("abcdef")
    }
}
Run Code Online (Sandbox Code Playgroud)

执行新的Bar().otherMethod()将返回'abcdefabcdef'.