例如:
@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注释方法myMethod,如果我传递了一个像@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: 31Attribute 'value' should have type 'java.lang.String'; but found type 'java.lang.Object' in @MyGroovyAnnotation at line: -1,column: -1
有没有人知道我需要做什么才能使这个工作,或者甚至可能吗?感谢您提供的任何帮助或洞察力.
解决方法 我遇到了同样的问题,而Gerard的回答也是这样,但是我不需要再创建一个常量类,只需要参考现有的类.例如:
@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中的注释?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)