Module  java.base
软件包  java.lang.invoke

Class 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
    另请参见:
    LambdaMetafactorySerialized Form
    • 构造方法详细信息

      • 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())
         
        重写:
        toStringObject
        结果
        a string representation of the object.