我想创建一个枚举,其中每个枚举对象都将映射到一个事件,并且将有一个与每个事件关联的类。工厂类将根据事件类型返回正确类的实例。这就是我想要做的:
枚举:
public Enum Event{
EVENT_1("First Event",EventProcessor1.class);
private final String eventType;
private final Class<? extends IEventProcessor> processorClass;
Event(String eventType, Class<? extends IEventProcessor> processorClass){
{
this.eventType = eventType;
this.processorClass = processorClass;
}
// getters setters ignored
....
}
工厂:
public class EventFactory{
....
public static IEventProcessor getEventProcessor(Event e){
return e.getProcessorClass.newInstance();
}
....
}
我创建新实例的行没有显示编译问题,但会引发实例化异常。所以我的问题是:为什么是例外?有什么替代方法可以做到这一点?
【IEventProcessor是所有EventProcessor类实现的接口】