Spec-Zone.ru › OpenJDK 24

Класс SerializedLambda

java.lang.Object
java.lang.invoke.SerializedLambda
Все реализованные интерфейсы:
Serializable
public final class SerializedLambda extends Object implements Serializable
Сериализованная форма лямбда-выражения. Свойства этого класса представляют информацию, присутствующую в месте создания лямбда-объекта, включая статические аргументы метафабрики, такие как идентификатор метода первичного функционального интерфейса и идентификатор метода реализации, а также динамические аргументы метафабрики, такие как значения, захваченные из лексической области видимости в момент захвата лямбда-выражения.

Реализаторы сериализуемых лямбда-выражений, такие как компиляторы или языковые среды выполнения, должны гарантировать корректную десериализацию экземпляров. Один из способов сделать это — убедиться, что метод writeReplace возвращает экземпляр SerializedLambda, а не допускать стандартной сериализации.

Класс SerializedLambda имеет метод readResolve, который ищет (возможно, закрытый) статический метод, называемый $deserializeLambda$(SerializedLambda) в захватывающем классе, вызывает его с собой в качестве первого аргумента и возвращает результат. Классы лямбда-выражений, реализующие $deserializeLambda$, отвечают за проверку того, что свойства SerializedLambda согласуются с фактически захваченным лямбда-выражением этим классом.

Идентификатор объекта функции, полученный при десериализации сериализованной формы, непредсказуем, и поэтому чувствительные к идентификатору операции (такие как равенство ссылок, блокировка объекта и System.identityHashCode()) могут давать разные результаты в разных реализациях, или даже при разных десериализациях в одной и той же реализации.

С момента:
1.8
См. также:
  • LambdaMetafactory
  • Сериализованная форма

Краткое описание конструкторов

Конструктор Описание
SerializedLambda(Class<?> capturingClass, String functionalInterfaceClass, String functionalInterfaceMethodName, String functionalInterfaceMethodSignature, int implMethodKind, String implClass, String implMethodName, String implMethodSignature, String instantiatedMethodType, Object[] capturedArgs)
Создаёт SerializedLambda на основе низкоуровневой информации, присутствующей в месте создания лямбда-выражения.

Краткое описание методов

Модификатор и тип Метод Описание
Object getCapturedArg(int i)
Получение динамического аргумента для места захвата лямбда-выражения.
int getCapturedArgCount()
Получение количества динамических аргументов для места захвата лямбда-выражения.
String getCapturingClass()
Получение имени класса, захватившего данное лямбда-выражение.
String getFunctionalInterfaceClass()
Получение имени вызываемого типа, в который преобразовано это лямбда-выражение.
String getFunctionalInterfaceMethodName()
Получение имени первичного метода функционального интерфейса, в который преобразовано данное лямбда-выражение.
String getFunctionalInterfaceMethodSignature()
Получение сигнатуры первичного метода функционального интерфейса, в который преобразовано данное лямбда-выражение.
String getImplClass()
Получение имени класса, содержащего метод реализации.
int getImplMethodKind()
Получение типа обработки метода (см. MethodHandleInfo) метода реализации.
String getImplMethodName()
Получение имени метода реализации.
String getImplMethodSignature()
Получение сигнатуры метода реализации.
final String getInstantiatedMethodType()
Получение сигнатуры первичного метода функционального интерфейса после подстановки типов-переменных их значениями из места захвата.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

SerializedLambda

public SerializedLambda(Class<?> capturingClass, String functionalInterfaceClass, String functionalInterfaceMethodName, String functionalInterfaceMethodSignature, int implMethodKind, String implClass, String implMethodName, String implMethodSignature, String instantiatedMethodType, Object[] capturedArgs)
Создаёт SerializedLambda на основе низкоуровневой информации, присутствующей в месте создания лямбда-выражения.
Параметры:
capturingClass - Класс, в котором появляется лямбда-выражение
functionalInterfaceClass - Имя, в формате с разделителями в виде слеша, статического типа возвращаемого объекта лямбда-выражения
functionalInterfaceMethodName - Имя метода функционального интерфейса для места создания лямбда-выражения
functionalInterfaceMethodSignature - Подпись метода функционального интерфейса для места создания лямбда-выражения
implMethodKind - Тип обработки метода для метода реализации
implClass - Имя, в формате с разделителями в виде слеша, класса, содержащего метод реализации
implMethodName - Имя метода реализации
implMethodSignature - Подпись метода реализации
instantiatedMethodType - Подпись первичного метода функционального интерфейса после замены типов-переменных их значениями из места захвата
capturedArgs - Динамические аргументы для места создания лямбда-выражения, которые представляют переменные, захваченные лямбда-выражением

Подробное описание методов

getCapturingClass

public String getCapturingClass()
Получение имени класса, захватившего данное лямбда-выражение.
Возвращает:
имя класса, захватившего данное лямбда-выражение

getFunctionalInterfaceClass

public String getFunctionalInterfaceClass()
Получение имени вызываемого типа, в который преобразовано это лямбда-выражение
Возвращает:
имя класса функционального интерфейса, в который преобразовано это лямбда-выражение

getFunctionalInterfaceMethodName

public String getFunctionalInterfaceMethodName()
Получение имени первичного метода функционального интерфейса, в который преобразовано данное лямбда-выражение.
Возвращает:
имя первичного метода функционального интерфейса

getFunctionalInterfaceMethodSignature

public String getFunctionalInterfaceMethodSignature()
Получение сигнатуры первичного метода функционального интерфейса, в который преобразовано данное лямбда-выражение.
Возвращает:
сигнатура первичного метода функционального интерфейса

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()
Получение количества динамических аргументов для места захвата лямбда-выражения.
Возвращает:
количество динамических аргументов для места захвата лямбда-выражения

getCapturedArg

public Object getCapturedArg(int i)
Получение динамического аргумента для места захвата лямбда-выражения.
Параметры:
i - аргумент для захвата
Возвращает:
динамический аргумент для места захвата лямбда-выражения

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/invoke/SerializedLambda.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API