有没有办法将常量传递给Groovy中的注释?

有没有办法将常量传递给Groovy中的注释?,第1张

概述在 Java中,可以将常量String作为参数传递注释,但是我无法弄清楚如何在Groovy中执行相同 *** 作. 例如: @Retention(RetentionPolicy.RUNTIME) @Target(value=[ElementType.METHOD]) public @interface MyGroovyAnnotation { String value() 在 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            }    }

在这里,如果我通过@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中的注释?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1243831.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存