Класс SerializedLambda
- Все реализуемые интерфейсы:
Serializable
public final class SerializedLambda extends Object implements Serializable
От разработчиков сериализуемых лямбда-выражений, таких как компиляторы или библиотеки времени выполнения языков, ожидается обеспечение корректной десериализации экземпляров. Один из способов добиться этого — обеспечить, чтобы метод writeReplace возвращал экземпляр SerializedLambda, а не позволял выполнять сериализацию по умолчанию.
У SerializedLambda есть метод readResolve, который ищет в захватывающем классе (возможно, закрытый) статический метод с именем $deserializeLambda$(SerializedLambda), вызывает его, передавая себя в качестве первого аргумента, и возвращает результат. Классы лямбда-выражений, реализующие $deserializeLambda$, отвечают за проверку соответствия свойств SerializedLambda лямбда-выражению, действительно захваченному этим классом.
Идентичность функционального объекта, созданного при десериализации сериализованной формы, непредсказуема, поэтому операции, чувствительные к идентичности (например, сравнение ссылок, блокировка объекта и System.identityHashCode()), могут давать разные результаты в разных реализациях или даже при разных десериализациях в одной и той же реализации.
- Начиная с:
- 1.8
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
SerializedLambda |
Создает SerializedLambda на основе низкоуровневой информации, присутствующей в точке создания лямбда-выражения. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Object |
getCapturedArg |
Получает динамический аргумент точки захвата лямбда-выражения. |
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 |
Указывает, равен ли этот объект какому-либо другому объекту. |
protected void |
finalize() |
Устарел и подлежит удалению: этот элемент API подлежит удалению в будущей версии. Финализация устарела и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова метода уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова метода уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
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.