我有预选赛的比赛

@Inject
@ChangeType(FOO)
private Event<SomeEventClass> event


我想在观察者方法中获取限定符(FOO)的值。我知道如何获取限定词作为注释,但不确定如何获取限定词的实例及其值。

public void listen(@Observes SomeEventClass event, EventMetadata meta) {
    Set<Annotation> qualifiers = meta.getQualifiers();
    for (Annotation qualifier : qualifiers) {
        //qualifier.annotationType()
    }
}

最佳答案

您只需要将Annotation强制转换为您的限定符类。

 public void listen(@Observes SomeEventClass event, EventMetadata meta) {
    Set<Annotation> qualifiers = meta.getQualifiers();
    ChangeType ct = null;
    for (Annotation qualifier : qualifiers) {
       if (qualifier.annotationType().equals(ChangeType.class)) {
                ct = (ChangeType) qualifier;
       }
    }
    if (ct != null)
        //do something with ct.value
}

10-08 13:38