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;
|
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.io.Serializable;
|
||||||
import java.lang.invoke.SerializedLambda;
|
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相关工具类
|
* Lambda相关工具类
|
||||||
*
|
*
|
||||||
@ -53,6 +55,10 @@ public class LambdaUtil {
|
|||||||
return resolve(func).getImplMethodName();
|
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表达式函数(方法)名称
|
* 获取lambda表达式函数(方法)名称
|
||||||
*
|
*
|
||||||
@ -65,6 +71,10 @@ public class LambdaUtil {
|
|||||||
return resolve(func).getImplMethodName();
|
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函数(方法)对应的字段名称,规则如下:
|
* 获取lambda表达式Getter或Setter函数(方法)对应的字段名称,规则如下:
|
||||||
* <ul>
|
* <ul>
|
||||||
|
@ -1,25 +1,37 @@
|
|||||||
package cn.hutool.core.lang.func;
|
package cn.hutool.core.lang.func;
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
public class LambdaUtilTest {
|
public class LambdaUtilTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getMethodNameTest(){
|
public void getMethodNameTest() {
|
||||||
String methodName = LambdaUtil.getMethodName(MyTeacher::getAge);
|
String methodName = LambdaUtil.getMethodName(MyTeacher::getAge);
|
||||||
Assert.assertEquals("getAge", methodName);
|
Assert.assertEquals("getAge", methodName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getFieldNameTest(){
|
public void getFieldNameTest() {
|
||||||
String fieldName = LambdaUtil.getFieldName(MyTeacher::getAge);
|
String fieldName = LambdaUtil.getFieldName(MyTeacher::getAge);
|
||||||
Assert.assertEquals("age", fieldName);
|
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
|
@Data
|
||||||
static class MyTeacher{
|
static class MyTeacher {
|
||||||
|
|
||||||
public String age;
|
public String age;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user