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