Class LambdaKit

java.lang.Object
org.aoju.bus.core.toolkit.LambdaKit

public class LambdaKit extends Object
Lambda相关工具类
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • LambdaKit

      public LambdaKit()
  • Method Details

    • resolve

      public static <T> SerializedLambda resolve(Func1<T,?> func)
      解析lambda表达式,加了缓存 该缓存可能会在任意不定的时间被清除
      Type Parameters:
      T - Lambda类型
      Parameters:
      func - 需要解析的 lambda 对象(无参方法)
      Returns:
      返回解析后的结果
    • resolve

      public static <R> SerializedLambda resolve(Func0<R> func)
      解析lambda表达式,加了缓存 该缓存可能会在任意不定的时间被清除
      Type Parameters:
      R - Lambda返回类型
      Parameters:
      func - 需要解析的 lambda 对象(无参方法)
      Returns:
      返回解析后的结果
    • getMethodName

      public static <P> String getMethodName(Func1<P,?> func)
      获取lambda表达式函数(方法)名称
      Type Parameters:
      P - Lambda参数类型
      Parameters:
      func - 函数(无参方法)
      Returns:
      函数名称
    • getMethodName

      public static <R> String getMethodName(Func0<R> func)
      获取lambda表达式函数(方法)名称
      Type Parameters:
      R - Lambda返回类型
      Parameters:
      func - 函数(无参方法)
      Returns:
      函数名称
    • getRealClass

      public static <R> Class<R> getRealClass(Func0<?> func)
      通过对象的方法或类的静态方法引用,获取lambda实现类
      Type Parameters:
      R - 类型
      Parameters:
      func - lambda
      Returns:
      lambda实现类
      Throws:
      IllegalArgumentException - 如果是不支持的方法引用,抛出该异常,见checkLambdaTypeCanGetClass(int)
    • getRealClass

      public static <P, R> Class<P> getRealClass(Func1<P,R> func)
      通过对象的方法或类的静态方法引用,然后根据SerializedLambda.getInstantiatedMethodType()获取lambda实现类 传入lambda有参数且含有返回值的情况能够匹配到此方法:
      Type Parameters:
      P - 方法调用方类型
      R - 返回值类型
      Parameters:
      func - lambda
      Returns:
      lambda实现类
      Throws:
      IllegalArgumentException - 如果是不支持的方法引用,抛出该异常,见checkLambdaTypeCanGetClass(int)
    • getFieldName

      public static <T> String getFieldName(Func1<T,?> func) throws IllegalArgumentException
      获取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方法
    • getFieldName

      public static <T> String getFieldName(Func0<T> func) throws IllegalArgumentException
      获取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方法