Package org.miaixz.bus.core.xyz
Class LambdaKit
java.lang.Object
org.miaixz.bus.core.xyz.LambdaKit
Lambda相关工具类
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <F> F等效于 Obj::methodstatic <T,R> Function <T, R> buildGetter(Class<T> clazz, String fieldName) 等效于 Obj::getXxxstatic <T,R> Function <T, R> buildGetter(Method getMethod) 等效于 Obj::getXxxstatic <T,P> BiConsumer <T, P> buildSetter(Class<T> clazz, String fieldName) Obj::setXxxstatic <T,P> BiConsumer <T, P> buildSetter(Method setMethod) 等效于 Obj::setXxxstatic <T extends Serializable>
StringgetFieldName(T func) 获取lambda表达式Getter或Setter函数(方法)对应的字段名称,规则如下: getXxxx获取为xxxx,如getName得到name。 setXxxx获取为xxxx,如setName得到name。 isXxxx获取为xxxx,如isName得到name。 其它不满足规则的方法名抛出IllegalArgumentExceptionstatic MethodgetInvokeMethod(Class<?> funcType) 获取函数的执行方法static <T extends Serializable>
StringgetMethodName(T func) 获取lambda表达式函数(方法)名称static <R,T extends Serializable>
Class<R> getRealClass(T func) 通过对象的方法或类的静态方法引用,获取lambda实现类 传入lambda无参数但含有返回值的情况能够匹配到此方法: 引用特定对象的实例方法:static <T extends Serializable>
LambdaInforesolve(T func) 解析lambda表达式,加了缓存。 该缓存可能会在任意不定的时间被清除static <T,U, R> Function <T, R> toFunction(BiFunction<T, U, R> biFunction, U param) 通过自定义固定参数,将BiFunction转换为Functionstatic <T,U> Consumer <T> toPredicate(BiConsumer<T, U> biConsumer, U param) 通过自定义固定参数,将BiConsumer转换为Consumerstatic <T,U> Predicate <T> toPredicate(BiPredicate<T, U> biPredicate, U param) 通过自定义固定参数,将BiPredicate转换为Predicate
-
Constructor Details
-
LambdaKit
public LambdaKit()
-
-
Method Details
-
getRealClass
通过对象的方法或类的静态方法引用,获取lambda实现类 传入lambda无参数但含有返回值的情况能够匹配到此方法:- 引用特定对象的实例方法:
MyTeacher myTeacher = new MyTeacher(); Class<MyTeacher> supplierClass = LambdaKit.getRealClass(myTeacher::getAge); Assert.assertEquals(MyTeacher.class, supplierClass); - 引用静态无参方法:
Class<MyTeacher> staticSupplierClass = LambdaKit.getRealClass(MyTeacher::takeAge); Assert.assertEquals(MyTeacher.class, staticSupplierClass);
// 枚举测试,只能获取到枚举类型 Class<Enum<?>> enumSupplierClass = LambdaKit.getRealClass(LambdaKit.LambdaKindEnum.REF_NONE::ordinal); Assert.assertEquals(Enum.class, enumSupplierClass); // 调用父类方法,只能获取到父类类型 Class<Entity<?>> superSupplierClass = LambdaKit.getRealClass(myTeacher::getId); Assert.assertEquals(Entity.class, superSupplierClass); // 引用父类静态带参方法,只能获取到父类类型 Class<Entity<?>> staticSuperFunctionClass = LambdaKit.getRealClass(MyTeacher::takeId); Assert.assertEquals(Entity.class, staticSuperFunctionClass);- Type Parameters:
R- 类型T- lambda的类型- Parameters:
func- lambda- Returns:
- lambda实现类
- 引用特定对象的实例方法:
-
resolve
解析lambda表达式,加了缓存。 该缓存可能会在任意不定的时间被清除- Type Parameters:
T- lambda的类型- Parameters:
func- 需要解析的 lambda 对象(无参方法)- Returns:
- 返回解析后的结果
-
getMethodName
获取lambda表达式函数(方法)名称- Type Parameters:
T- lambda的类型- Parameters:
func- 函数(无参方法)- Returns:
- 函数名称
-
getFieldName
获取lambda表达式Getter或Setter函数(方法)对应的字段名称,规则如下:- getXxxx获取为xxxx,如getName得到name。
- setXxxx获取为xxxx,如setName得到name。
- isXxxx获取为xxxx,如isName得到name。
- 其它不满足规则的方法名抛出
IllegalArgumentException
- Type Parameters:
T- lambda的类型- Parameters:
func- 函数- Returns:
- 方法名称
- Throws:
IllegalArgumentException- 非Getter或Setter方法
-
buildGetter
等效于 Obj::getXxx- Type Parameters:
T- 调用getter方法对象类型R- getter方法返回值类型- Parameters:
getMethod- getter方法- Returns:
- Obj::getXxx
-
buildGetter
等效于 Obj::getXxx- Type Parameters:
T- 调用getter方法对象类型R- getter方法返回值类型- Parameters:
clazz- 调用getter方法对象类fieldName- 字段名称- Returns:
- Obj::getXxx
-
buildSetter
等效于 Obj::setXxx- Type Parameters:
T- 调用setter方法对象类型P- setter方法返回的值类型- Parameters:
setMethod- setter方法- Returns:
- Obj::setXxx
-
buildSetter
Obj::setXxx- Type Parameters:
T- 调用setter方法对象类型P- setter方法返回的值类型- Parameters:
clazz- 调用setter方法对象类fieldName- 字段名称- Returns:
- Obj::setXxx
-
build
public static <F> F build(Class<F> lambdaType, Class<?> clazz, String methodName, Class<?>... paramsTypes) 等效于 Obj::method- Type Parameters:
F- 函数式接口类型- Parameters:
lambdaType- 接受lambda的函数式接口类型clazz- 调用类methodName- 方法名paramsTypes- 方法参数类型数组- Returns:
- Obj::method
-
toFunction
通过自定义固定参数,将BiFunction转换为Function- Type Parameters:
T- 参数类型U- 参数2类型R- 返回值类型- Parameters:
biFunction-BiFunctionparam- 参数- Returns:
Function
-
toPredicate
通过自定义固定参数,将BiPredicate转换为Predicate- Type Parameters:
T- 参数类型U- 参数2类型- Parameters:
biPredicate-BiFunctionparam- 参数- Returns:
Predicate
-
toPredicate
通过自定义固定参数,将BiConsumer转换为Consumer- Type Parameters:
T- 参数类型U- 参数2类型- Parameters:
biConsumer-BiConsumerparam- 参数- Returns:
Consumer
-
getInvokeMethod
获取函数的执行方法- Parameters:
funcType- 函数接口类- Returns:
Method
-