Spec-Zone.ru › OpenJDK 27

Класс SerializedLambda

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

От разработчиков сериализуемых лямбда-выражений, таких как компиляторы или библиотеки времени выполнения языков, ожидается обеспечение корректной десериализации экземпляров. Один из способов добиться этого — обеспечить, чтобы метод 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()
Получает сигнатуру основного метода функционального интерфейса после подстановки типов, соответствующих их конкретным значениям в точке захвата.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарел и подлежит удалению: этот элемент API подлежит удалению в будущей версии.
Финализация устарела и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова метода уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова метода уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова метода уведомления или прерывания, либо до истечения заданного промежутка реального времени.

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

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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