IncompleteAnnotationException при доступе к аннотации в Groovy - PullRequest
0 голосов
/ 16 сентября 2010

Я определил аннотацию следующим образом

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
}

Я получаю сообщение об ошибке, в котором говорится, что аннотация отсутствуетlabel

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 Ответ

1 голос
/ 16 сентября 2010

У вас есть два варианта.Если вы хотите использовать синтаксис @Remote("Bar"), вам нужно изменить метод label() на value(), поскольку это имя метода для свойства по умолчанию для аннотаций, когда имя не указано.

Еслихотя вы хотите, чтобы он назывался label(), укажите его как @Remote(label="Bar")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...