В Java можно передать константу String в качестве параметра в аннотацию, но я не могу понять, как сделать то же самое в 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
}
}
Здесь, где метод myMethod
аннотируется с помощью @MyGroovyAnnotation
, если я передаю строковый литерал как @MyGroovyAnnotation(value="Something")
, он работает отлично, но если я попытаюсь передать 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
Кто-нибудь знает, что мне нужно сделать, чтобы заставить это работать, или если это возможно? Спасибо за любую помощь или прозрение, которое вы можете предоставить.