Я пытаюсь создать кеш с помощью MapMaker / CacheBuilder, но не понимаю, как правильно обрабатывать нулевые значения.
ConcurrentMap<Key, Graph> graphs = new MapMaker()
.concurrencyLevel(4)
.weakKeys()
.maximumSize(10000)
.expireAfterWrite(10, TimeUnit.MINUTES)
.makeComputingMap(
new Function<Key, Graph>() {
public Graph apply(Key key) {
return createExpensiveGraph(key);
}
});
Если метод createExrivateGraph возвращает нулевое значение, возникает исключение NullpointerException. Я не понимаю, почему ComputingConcurrentHashMap выдает NPE вместо того, чтобы просто возвращать нулевое значение.
Как правильно с этим справиться? Просто поймайте NPE и вместо этого верните null? Я что-то упустил?