【发布时间】:2012-06-10 21:56:46
【问题描述】:
有没有办法通过 CDI 事件使用类继承?
假设我有这样的事情:
public class ParentEvent{}
public class ChildEvent extends ParentEvent{}
还有这样的:
public class Manager(){
@Inject
private Event<ParrentEvent> event;
public void foo(){
event.fire(new ParentEvent());
}
public void bar(){
event.fire(new ChildtEvent());
}
}
public class Observer{
public void observesParent(@Observes ParentEvent event){
//do something
}
public void observesChild(@Observes ChildEvent event){
//do something
}
}
在这种情况下,ParentEvent 和 ChildEvent 都由 observesParent() 处理 - 由于 Manager 类中的事件属性类型。有没有办法用两种观察者方法观察 ChildEvent ?
【问题讨论】:
-
我建议您的 CDI 事件是不可变的和最终的,以避免任何意外。我不确定允许通过继承或其他方式修改行为是否是个好主意。