聂秋秋 5 years ago
parent
commit
183d0f6360

+ 4 - 8
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/LambdaUtils.java

@@ -24,7 +24,6 @@ import com.baomidou.mybatisplus.core.toolkit.support.SerializedLambda;
 import java.lang.ref.WeakReference;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 
 import static java.util.Locale.ENGLISH;
@@ -59,13 +58,10 @@ public final class LambdaUtils {
     public static <T> SerializedLambda resolve(SFunction<T, ?> func) {
         Class<?> clazz = func.getClass();
         String canonicalName = clazz.getCanonicalName();
-        return Optional.ofNullable(FUNC_CACHE.get(canonicalName))
-            .map(WeakReference::get)
-            .orElseGet(() -> {
-                SerializedLambda lambda = SerializedLambda.resolve(func);
-                FUNC_CACHE.put(canonicalName, new WeakReference<>(lambda));
-                return lambda;
-            });
+        return FUNC_CACHE.computeIfAbsent(canonicalName, (k) -> {
+            SerializedLambda lambda = SerializedLambda.resolve(func);
+            return new WeakReference<>(lambda);
+        }).get();
     }
 
     /**