Я пытаюсь создать кеш с помощью 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);
}
});
Если метод createExpensiveGraph возвращает значение null, то генерируется исключение NullpointerException. Я не понимаю, почему ComputingConcurrentHashMap выбрасывает NPE вместо того, чтобы просто возвращать нулевое значение.
Как правильно справиться с этим? Просто поймайте NPE и вместо этого верните нуль? Я что-то пропустил?