2017-05-05 53 views
0

裏面我有事件與預選賽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

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