在groovy中访问注释时出现IncompleteAnnotationException

时间:2010-09-16 05:29:29

标签: 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()

1 个答案:

答案 0 :(得分:1)

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

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