public final class SerializedLambda extends Object implements Serializable
可序列化的lambdas的实现者,如编译器或语言运行时库,有望确保反序列化的实例正确。 这样做的一个方法是确保writeReplace
方法返回一个SerializedLambda
的实例,而不是允许默认序列化继续。
SerializedLambda
有一个readResolve
方法,在readResolve
类中查找一个名为$deserializeLambda$(SerializedLambda)
的(可能是私有的)静态方法,并将其自身调用为第一个参数,并返回结果。 实现$deserializeLambda$
Lambda类负责$deserializeLambda$
SerializedLambda
的属性与该类实际捕获的lambda一致。
LambdaMetafactory
, Serialized Form
Constructor and Description |
---|
SerializedLambda(类<?> capturingClass, String functionalInterfaceClass, String functionalInterfaceMethodName, String functionalInterfaceMethodSignature, int implMethodKind, String implClass, String implMethodName, String implMethodSignature, String instantiatedMethodType, Object[] capturedArgs)
从lambda工厂现场的低级信息创建一个
SerializedLambda 。
|
Modifier and Type | Method and Description |
---|---|
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()
在使用捕获站点的实例化代替类型变量后,获取主要功能接口方法的签名。
|
String |
toString()
返回对象的字符串表示形式。
|
public SerializedLambda(类<?> capturingClass, String functionalInterfaceClass, String functionalInterfaceMethodName, String functionalInterfaceMethodSignature, int implMethodKind, String implClass, String implMethodName, String implMethodSignature, String instantiatedMethodType, Object[] capturedArgs)
SerializedLambda
。
capturingClass
- lambda表达式出现的类
functionalInterfaceClass
- 以斜杠分隔的形式,返回的lambda对象的静态类型的名称
functionalInterfaceMethodName
- 在lambda工厂现场的功能接口方法的名称
functionalInterfaceMethodSignature
- 在lambda工厂现场的功能接口方法的签名
implMethodKind
- 实现方法的方法句柄类
implClass
- 以斜杠分隔的形式,用于持有实现方法的类的名称
implMethodName
- 实现方法的名称
implMethodSignature
- 签名的实现方法
instantiatedMethodType
- 类型变量之后的主要功能接口方法的签名由其捕获站点的实例化代替
capturedArgs
- lambda工厂现场的动态参数,表示由lambda捕获的变量
public String getCapturingClass()
public String getFunctionalInterfaceClass()
public String getFunctionalInterfaceMethodName()
public String getFunctionalInterfaceMethodSignature()
public String getImplClass()
public String getImplMethodName()
public String getImplMethodSignature()
public int getImplMethodKind()
MethodHandleInfo
)的实现方法。
public final String getInstantiatedMethodType()
public int getCapturedArgCount()
public Object getCapturedArg(int i)
i
- 要捕获的参数