我有一个传入的请求队列,并希望能够为不同类型的请求(由其类标识)注册处理程序对象(接口RequestHandler的实例)。什么是最合适(最有效,最快速)的地图存储方式?

澄清一下:我在寻找存储类和处理程序之间关系的最佳方法。

最佳答案

我已经使用Map<Class, RequestHandler>并确保各个类型在使用它的方法中匹配。

private final Map<Class, RequestHandler> handlerMap = new HashMap<>();

public <T extends Request> void setHandler(Class<T> tClass, RequestHandler<T> handler) {
     handlerMap.put(tClass, handler);
}

public <T extends Request> RequestHandler<T> getHandler(Class<T> tClass) {
     return (RequestHandler<T>) handlerMap.get(tClass);
}

08-06 04:42