在java中我可以写@SomeAnnotation("abc"+"cd")
。当我在groovy中做同样的事情时,我得到了编译错误'期望...是一个内联常量'。如何在groovy中的注释中连接字符串常量?
答案 0 :(得分:3)
你不能因为这个表达式不是Groovy中的编译时常量。
这里有几个选项
使用常量声明一个普通的Java接口,并使用Groovy
@SomeAnnotation(Constants.MY_CONST)
如果您可以更改注释的源代码,可以尝试使用closure annotation parameters
您也可以在此处使用compile-time AST transformations以肮脏的方式实现目标。 (很可能你不想玩AST)
无法使用像'aaa' + 'bbb'
这样的表达式并不是唯一的问题,即使使用编译时表达式,您也可以看到Attribute 'value' should have type 'java.lang.String'; but found type 'java.lang.Object'
之类的错误。以下是相关问题GROOVY-3278,其中包含可能的解决方法。