- java.lang.Object
-
- java.lang.invoke.SerializedLambda
-
- 实现的所有接口
-
Serializable
public final class SerializedLambda extends Object implements Serializable
lambda表达式的序列化形式。 此类的属性表示lambda工厂站点上存在的信息,包括静态metafactory参数,例如主要功能接口方法的标识和实现方法的标识,以及动态metafactory参数,例如从中捕获的值lambda捕获时的词法范围。可序列化lambda的实现者,例如编译器或语言运行库,应该确保实例正确地反序列化。 一个是指这样做是为了确保
writeReplace方法返回的实例SerializedLambda,而不是让默认序列化进行。SerializedLambda有一个readResolve方法,它在捕获类中查找名为$deserializeLambda$(SerializedLambda)的(可能是私有的)静态方法,并将其自身作为第一个参数调用,并返回结果。 实施LAMBDA类$deserializeLambda$负责验证了的性质SerializedLambda是由该类实际拍摄的拉姆达一致。通过反序列化序列化表单生成的函数对象的标识是不可预测的,因此标识敏感操作(例如引用相等,对象锁定和
System.identityHashCode()可能在不同的实现中产生不同的结果,或者甚至在同一实现中的不同反序列化时产生不同的结果。- 从以下版本开始:
- 1.8
- 另请参见:
-
LambdaMetafactory, Serialized Form
-
-
构造方法摘要
构造方法 构造器 描述 SerializedLambda(类<?> capturingClass, String functionalInterfaceClass, String functionalInterfaceMethodName, String functionalInterfaceMethodSignature, int implMethodKind, String implClass, String implMethodName, String implMethodSignature, String instantiatedMethodType, Object[] capturedArgs)从lambda工厂站点的低级信息创建SerializedLambda。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 ObjectgetCapturedArg(int i)获取lambda捕获站点的动态参数。intgetCapturedArgCount()获取lambda捕获站点的动态参数计数。StringgetCapturingClass()获取捕获此lambda的类的名称。StringgetFunctionalInterfaceClass()获取此lambda已转换为的调用类型的名称StringgetFunctionalInterfaceMethodName()获取已转换此lambda的功能接口的主要方法的名称。StringgetFunctionalInterfaceMethodSignature()获取此lambda已转换为的功能接口的主要方法的签名。StringgetImplClass()获取包含实现方法的类的名称。intgetImplMethodKind()获取方法句柄类(参见MethodHandleInfo)的实现方法。StringgetImplMethodName()获取实现方法的名称。StringgetImplMethodSignature()获取实现方法的签名。StringgetInstantiatedMethodType()在将类型变量替换为来自捕获站点的实例化之后,获取主要功能接口方法的签名。
-
-
-
构造方法详细信息
-
SerializedLambda
public SerializedLambda(类<?> capturingClass, String functionalInterfaceClass, String functionalInterfaceMethodName, String functionalInterfaceMethodSignature, int implMethodKind, String implClass, String implMethodName, String implMethodSignature, String instantiatedMethodType, Object[] capturedArgs)
从lambda工厂站点的低级信息创建SerializedLambda。- 参数
-
capturingClass- lambda表达式出现的类 -
functionalInterfaceClass- 以斜杠分隔的形式表示返回的lambda对象的静态类型的名称 -
functionalInterfaceMethodName- lambda工厂现场的当前功能接口方法的名称 -
functionalInterfaceMethodSignature- lambda工厂现场存在的功能接口方法的签名 -
implMethodKind- 实现方法的方法句柄类型 -
implClass- 以斜杠分隔的形式表示包含实现方法的类的名称 -
implMethodName- 实现方法的名称 -
implMethodSignature- 实现方法的签名 -
instantiatedMethodType- 类型变量替换为捕获站点实例化后的主要功能接口方法的签名 -
capturedArgs- lambda工厂站点的动态参数,表示lambda捕获的变量
-
-
方法详细信息
-
getCapturingClass
public String getCapturingClass()
获取捕获此lambda的类的名称。- 结果
- 捕获此lambda的类的名称
-
getFunctionalInterfaceClass
public String getFunctionalInterfaceClass()
获取此lambda已转换为的调用类型的名称- 结果
- 此lambda已转换为的函数接口类的名称
-
getFunctionalInterfaceMethodName
public String getFunctionalInterfaceMethodName()
获取已转换此lambda的功能接口的主要方法的名称。- 结果
- 功能接口的主要方法的名称
-
getFunctionalInterfaceMethodSignature
public String getFunctionalInterfaceMethodSignature()
获取此lambda已转换为的功能接口的主要方法的签名。- 结果
- 功能接口主要方法的签名
-
getImplClass
public String getImplClass()
获取包含实现方法的类的名称。- 结果
- 包含实现方法的类的名称
-
getImplMethodName
public String getImplMethodName()
获取实现方法的名称。- 结果
- 实现方法的名称
-
getImplMethodSignature
public String getImplMethodSignature()
获取实现方法的签名。- 结果
- 实现方法的签名
-
getImplMethodKind
public int getImplMethodKind()
获取方法句柄类(见MethodHandleInfo)的实现方法。- 结果
- 方法处理实现方法的种类
-
getInstantiatedMethodType
public final String getInstantiatedMethodType()
在将类型变量替换为来自捕获站点的实例化之后,获取主要功能接口方法的签名。- 结果
- 类型变量处理后的主要功能接口方法的签名
-
getCapturedArgCount
public int getCapturedArgCount()
获取lambda捕获站点的动态参数计数。- 结果
- lambda捕获站点的动态参数计数
-
getCapturedArg
public Object getCapturedArg(int i)
获取lambda捕获站点的动态参数。- 参数
-
i- 捕获的参数 - 结果
- lambda捕获站点的动态参数
-
-