在 Java 中,可以将常量字符串作为参数传递给注释,但我不知道如何在 Groovy 中执行相同的操作。
例如:
@Retention(RetentionPolicy.RUNTIME)
@Target(value=[ElementType.METHOD])
public @interface MyGroovyAnnotation {
String value()
}
class MyGroovyClass {
public static final String VALUE = "Something"
@MyGroovyAnnotation(value=VALUE)
public String myMethod(String value) {
return value
}
}
在这里,如果我传递像 @MyGroovyAnnotation(value="Something") 这样的字符串文字,则方法
code>,它工作得很好,但是如果我尝试像上面的示例一样传递 myMethod
用 @MyGroovyAnnotation
进行注释VALUE
,我会得到:
来自 Eclipse:
Groovy:Expected 'VALUE' to be an inline constant of type java.lang.String in @MyGroovyAnnotation
从 GroovyConsole 运行:
expected 'VALUE' to be an inline constant of type java.lang.String not a field expression in @MyGroovyAnnotation
at line: 20, column: 31
Attribute 'value' should have type 'java.lang.String'; but found type 'java.lang.Object' in @MyGroovyAnnotation
at line: -1, column: -1
有谁知道我需要做什么才能让它发挥作用,或者是否有可能?感谢您提供的任何帮助或见解。
最佳答案
我遇到了同样的问题,Gerard 的答案有效,但我不需要创建一个新的 Constants 类,只需引用现有的类即可。
例如:
@Retention(RetentionPolicy.RUNTIME)
@Target(value=[ElementType.METHOD])
public @interface MyGroovyAnnotation {
String value()
}
class MyGroovyClass {
public static final String VALUE = "Something"
@MyGroovyAnnotation(value=MyGroovyClass.VALUE)
public String myMethod(String value) {
return value
}
}
我想对已接受的答案发表评论,但我没有 50 的声誉。
关于groovy - 有没有办法将常量传递给 Groovy 中的注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21286132/