public <T> T construct(Class<T> componentType) {
switch (configuration.getEvictionStrategy()) {
case NONE:
return (T) new SimpleDataContainer(configuration.getConcurrencyLevel());
case FIFO:
return (T) new FIFODataContainer(configuration.getConcurrencyLevel());
case LRU:
return (T) new LRUDataContainer(configuration.getConcurrencyLevel());
default:
throw new ConfigurationException("Unknown eviction strategy " + configuration.getEvictionStrategy());
}