Обработка нулевого значения с помощью Guava MapMaker / CacheBuilder

Я пытаюсь создать кеш с помощью 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? Я что-то упустил?

26
задан skaffman 28 November 2011 в 15:56
поделиться