- java.lang.Object
-
- java.lang.invoke.SerializedLambda
-
- All Implemented Interfaces:
-
Serializable
public final class SerializedLambda extends Object implements Serializable
lambda表达式的序列化形式。 该类的属性表示在lambda工厂现场存在的信息,包括静态元验证参数,例如主功能接口方法的标识和实现方法的身份,以及动态元嗅觉参数,例如从在λ捕获时的词汇范围。可序列化的lambdas的实现者,如编译器或语言运行时库,有望确保反序列化的实例正确。 一种方法是确保
writeReplace
方法返回一个SerializedLambda
的实例,而不是允许默认序列化继续。SerializedLambda
有一个readResolve
方法,在捕获类中查找一个名为$deserializeLambda$(SerializedLambda)
的(可能是私有的)静态方法,并将其自身调用为第一个参数,并返回结果。 实施LAMBDA类$deserializeLambda$
负责验证了的性质SerializedLambda
是由该类实际拍摄的拉姆达一致。- 从以下版本开始:
- 1.8
- 另请参见:
-
LambdaMetafactory
, Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 SerializedLambda(Class<?> capturingClass, String functionalInterfaceClass, String functionalInterfaceMethodName, String functionalInterfaceMethodSignature, int implMethodKind, String implClass, String implMethodName, String implMethodSignature, String instantiatedMethodType, Object[] capturedArgs)
从lambda工厂现场的低级信息创建一个SerializedLambda
。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 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()
返回对象的字符串表示形式。
-
-
-
构造方法详细信息
-
SerializedLambda
public SerializedLambda(Class<?> 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捕获站点的动态参数
-
toString
public String toString()
描述从类别复制:Object
返回对象的字符串表示形式。 一般来说,toString
方法返回一个“toString
代表”这个对象的字符串。 结果应该是一个简明扼要的表达,容易让人阅读。 建议所有子类覆盖此方法。该
toString
类方法Object
返回一个由类的名称,其中所述对象是其实例,该符号字符`的字符串@
”,并且对象的哈希码的无符号的十六进制表示。 换句话说,这个方法返回一个等于下列值的字符串:getClass().getName() + '@' + Integer.toHexString(hashCode())
-
-