吴羡
5 小时以前 2f07589b54d56085af77b50d580890cd4130b444
ruoyi-common/src/main/java/com/ruoyi/common/numgen/LambdaUtils.java
@@ -58,12 +58,17 @@
     */
    public static <T> SerializedLambda resolve(SFunction<T, ?> func) {
        Class<?> clazz = func.getClass();
        String canonicalName = clazz.getCanonicalName();
        return Optional.ofNullable(FUNC_CACHE.get(canonicalName))
        // lambda/方法引用生成的是隐藏类,getCanonicalName() 返回 null,ConcurrentHashMap 不接受 null key
        String cacheKey = clazz.getCanonicalName();
        if (cacheKey == null) {
            cacheKey = clazz.getName();
        }
        final String key = cacheKey;
        return Optional.ofNullable(FUNC_CACHE.get(key))
            .map(WeakReference::get)
            .orElseGet(() -> {
                SerializedLambda lambda = SerializedLambda.resolve(func);
                FUNC_CACHE.put(canonicalName, new WeakReference<>(lambda));
                FUNC_CACHE.put(key, new WeakReference<>(lambda));
                return lambda;
            });
    }