diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/func/LambdaUtil.java b/hutool-core/src/main/java/cn/hutool/core/lang/func/LambdaUtil.java index c57a41f47..cfec37eea 100644 --- a/hutool-core/src/main/java/cn/hutool/core/lang/func/LambdaUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/func/LambdaUtil.java @@ -2,7 +2,11 @@ package cn.hutool.core.lang.func; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.lang.SimpleCache; +import cn.hutool.core.text.CharPool; +import cn.hutool.core.text.StrPool; +import cn.hutool.core.util.ClassUtil; import cn.hutool.core.util.ReflectUtil; +import cn.hutool.core.util.StrUtil; import java.io.Serializable; import java.lang.invoke.SerializedLambda; @@ -53,6 +57,18 @@ public class LambdaUtil { return resolve(func).getImplMethodName(); } + /** + * 获取lambda实现类 + * + * @param func lambda + * @param

类型 + * @return lambda实现类 + */ + public static

Class

getInstantiatedClass(Func1 func) { + String instantiatedMethodType = resolve(func).getInstantiatedMethodType(); + return ClassUtil.loadClass(StrUtil.replace(StrUtil.sub(instantiatedMethodType, 2, StrUtil.indexOf(instantiatedMethodType, ';')), StrPool.SLASH, StrPool.DOT)); + } + /** * 获取lambda表达式函数(方法)名称 * @@ -65,6 +81,17 @@ public class LambdaUtil { return resolve(func).getImplMethodName(); } + /** + * 获取lambda实现类 + * + * @param func lambda + * @param 类型 + * @return lambda实现类 + */ + public static Class getImplClass(Func0 func) { + return ClassUtil.loadClass(resolve(func).getImplClass().replace(CharPool.SLASH, CharPool.DOT)); + } + /** * 获取lambda表达式Getter或Setter函数(方法)对应的字段名称,规则如下: *