mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
新增LambdaUtil#getImplClass方法
This commit is contained in:
parent
d1122bd3c5
commit
2087ef8be7
@ -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>
|
||||
|
@ -1,25 +1,37 @@
|
||||
package cn.hutool.core.lang.func;
|
||||
|
||||
import lombok.Data;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
public class LambdaUtilTest {
|
||||
|
||||
@Test
|
||||
public void getMethodNameTest(){
|
||||
public void getMethodNameTest() {
|
||||
String methodName = LambdaUtil.getMethodName(MyTeacher::getAge);
|
||||
Assert.assertEquals("getAge", methodName);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getFieldNameTest(){
|
||||
public void getFieldNameTest() {
|
||||
String fieldName = LambdaUtil.getFieldName(MyTeacher::getAge);
|
||||
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{
|
||||
static class MyTeacher {
|
||||
|
||||
public String age;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user