我不想使用if / else,而是想使用地图来获得具体的实现。
我想使用泛型来声明特定的实体处理程序,但女巫处理了特定的实体,但是我遇到的问题是该处理程序仅接受我的实体接口的扩展。代码如下:
private Map<Class<IEntity>, IEntityHandler> handlers;
public void callingMethod(IModel model) {
for (IEntity entity : model.getObjects()) {
// handle accepts just IDevice and not IEntity !
handlers.get(entity).handle(entity);
}
}
public interface IEntityHandler<T extends IEntity> {
handle(T entity);
}
public class DeviceHandler implements IEntityHandler<IDevice> {
@Override
public void handle(IDevice deviceEntity) {
// do something
}
}
如何获得需要IEntity的handle方法? IDevice从IEntity扩展。
最佳答案
声明您的映射为:
Map<Class<T extends IEntity>, IEntityHandler> handlers.