Groovy   发布时间:2022-04-12  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了有没有办法将常量传递给Groovy中的注释?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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注释@L_789_2@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: 31

Attribute '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中的注释?所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。