我定义了一个注释如下
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()
答案 0 :(得分:1)
您有两种选择。如果要使用@Remote("Bar")
语法,则需要将label()
方法更改为value()
,因为这是未指定名称时注释的默认属性的方法名称。 / p>
如果您希望将其命名为label()
,请将其指定为@Remote(label="Bar")