我定义了一个注释如下
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()
最佳答案
您有两个选择。如果要使用@Remote("Bar")
语法,则需要将label()
方法更改为value()
,因为这是未指定名称时注释的默认属性的方法名称。
如果您希望将其称为label()
,请将其指定为@Remote(label="Bar")
关于grails - 在Groovy中访问注释时出现IncompleteAnnotationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3723945/