grails - 在Groovy中访问注释时出现IncompleteAnnotationException

标签 grails groovy

我定义了一个注释如下

import java.lang.annotation.ElementType
import java.lang.annotation.Inherited
import java.lang.annotation.Retention
import java.lang.annotation.RetentionPolicy
import java.lang.annotation.Target

/**
* Annotation for any object that exposed a remote interface
*/
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Remote {
String label()
}

我正在尝试以这种方式使用它
import com.yascie.annotation.Remote

@Remote("Bar")  
class Foo {
    String name
    String value
    static String code
}

我不断收到错误消息,指出注释缺少元素标签
java.lang.annotation.IncompleteAnnotationException: Remote missing element label

现在,当我尝试检查注释对象时,我可以看到通过代理可以使用标签方法,但是我无法访问它。有任何想法吗 ?
Remote annotation = objectClass.clazz.getAnnotation(Remote.class);
annotation.metaClass.methods.each {println it}

public final java.lang.String $Proxy14.label()
  • ken
  • 最佳答案

    您有两个选择。如果要使用@Remote("Bar")语法,则需要将label()方法更改为value(),因为这是未指定名称时注释的默认属性的方法名称。

    如果您希望将其称为label(),请将其指定为@Remote(label="Bar")

    关于grails - 在Groovy中访问注释时出现IncompleteAnnotationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3723945/

    相关文章:

    java - 在本地 Maven 存储库中发布存档

    groovy - `configurations.<config>`允许迭代什么?

    hibernate - Grails和JPA批注+ hibernate 映射文件。如何摆脱这个错误?

    unit-testing - 在Grails服务中测试标准创建

    grails - 使用默认文件或最后一个文件打开Grails控制台

    java - Tomcat 因大量请求而挂起

    grails - 根据Grails中的环境使用不同的layouts/main.gsp

    java - Groovy - 对象重用。

    maven - 在 Jenkins 管道 Groovy 脚本中访问 Maven 元数据插件参数?

    grails - 如何使groovy @Deprecated属性在Eclipse/IntelliJ中显示为不赞成使用(('strikethrough')?