CDI,从观察者内部的限定符中获取值

时间:2017-05-05 03:05:00

标签: java java-ee cdi

我有限定符的事件

@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()
    }
}

1 个答案:

答案 0 :(得分:1)

您只需将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 
}