新增LambdaUtil#getImplClass方法

This commit is contained in:
VampireAchao 2022-03-23 19:01:45 +08:00
parent d1122bd3c5
commit 2087ef8be7
2 changed files with 30 additions and 8 deletions

View File

@ -1,12 +1,14 @@
package cn.hutool.core.lang.func;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.SimpleCache;
import cn.hutool.core.util.ReflectUtil;
import java.io.Serializable;
import java.lang.invoke.SerializedLambda;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.SimpleCache;
import cn.hutool.core.text.CharPool;
import cn.hutool.core.util.ClassUtil;
import cn.hutool.core.util.ReflectUtil;
/**
* Lambda相关工具类
*
@ -53,6 +55,10 @@ public class LambdaUtil {
return resolve(func).getImplMethodName();
}
public static <P> Class<P> getImplClass(Func1<P, ?> func) {
return ClassUtil.loadClass(resolve(func).getImplClass().replace(CharPool.SLASH, CharPool.DOT));
}
/**
* 获取lambda表达式函数方法名称
*
@ -65,6 +71,10 @@ public class LambdaUtil {
return resolve(func).getImplMethodName();
}
public static <R> Class<R> getImplClass(Func0<?> func) {
return ClassUtil.loadClass(resolve(func).getImplClass().replace(CharPool.SLASH, CharPool.DOT));
}
/**
* 获取lambda表达式Getter或Setter函数方法对应的字段名称规则如下
* <ul>

View File

@ -1,9 +1,10 @@
package cn.hutool.core.lang.func;
import lombok.Data;
import org.junit.Assert;
import org.junit.Test;
import lombok.Data;
public class LambdaUtilTest {
@Test
@ -18,8 +19,19 @@ public class LambdaUtilTest {
Assert.assertEquals("age", fieldName);
}
@Test
public void getImplClassTest() {
Class<MyTeacher> aClass = LambdaUtil.getImplClass(MyTeacher::getAge);
Assert.assertEquals(MyTeacher.class, aClass);
MyTeacher myTeacher = new MyTeacher();
Class<MyTeacher> bClass = LambdaUtil.getImplClass(myTeacher::getAge);
Assert.assertEquals(MyTeacher.class, bClass);
}
@Data
static class MyTeacher {
public String age;
}
}