diff --git a/hutool-core/src/main/java/cn/hutool/core/cache/SimpleCache.java b/hutool-core/src/main/java/cn/hutool/core/cache/SimpleCache.java index 687d9fed7..7f1695be6 100644 --- a/hutool-core/src/main/java/cn/hutool/core/cache/SimpleCache.java +++ b/hutool-core/src/main/java/cn/hutool/core/cache/SimpleCache.java @@ -96,7 +96,7 @@ public class SimpleCache implements Iterable>, Serializabl */ public V get(final K key, final Predicate validPredicate, final Func0 supplier) { V v = get(key); - if((null != validPredicate && false == validPredicate.test(v))){ + if((null != validPredicate && null != v && false == validPredicate.test(v))){ v = null; } if (null == v && null != supplier) { diff --git a/hutool-core/src/test/java/cn/hutool/core/lang/SimpleCacheTest.java b/hutool-core/src/test/java/cn/hutool/core/lang/SimpleCacheTest.java index e2ce0f7d4..ff0087074 100755 --- a/hutool-core/src/test/java/cn/hutool/core/lang/SimpleCacheTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/lang/SimpleCacheTest.java @@ -46,6 +46,14 @@ public class SimpleCacheTest { Assert.assertEquals("value6", cache.get("key6", ()-> "value6")); } + @Test + public void getWithPredicateTest(){ + // 检查predicate空指针 + final SimpleCache cache = new SimpleCache<>(); + final String value = cache.get("abc", (v)-> v.equals("1"), () -> "123"); + Assert.assertEquals("123", value); + } + @Test public void getConcurrencyTest(){ final SimpleCache cache = new SimpleCache<>();