- 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
。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 Object
getCapturedArg(int i)
获取lambda捕获站点的动态参数。int
getCapturedArgCount()
获取lambda捕获站点的动态参数计数。String
getCapturingClass()
获取捕获此lambda的类的名称。String
getFunctionalInterfaceClass()
获取此lambda已转换为的调用类型的名称String
getFunctionalInterfaceMethodName()
获取已转换此lambda的功能接口的主要方法的名称。String
getFunctionalInterfaceMethodSignature()
获取此lambda已转换为的功能接口的主要方法的签名。String
getImplClass()
获取包含实现方法的类的名称。int
getImplMethodKind()
获取方法句柄类(参见MethodHandleInfo
)的实现方法。String
getImplMethodName()
获取实现方法的名称。String
getImplMethodSignature()
获取实现方法的签名。String
getInstantiatedMethodType()
在将类型变量替换为来自捕获站点的实例化之后,获取主要功能接口方法的签名。
-
-
-
构造方法详细信息
-
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捕获站点的动态参数
-
-