Spec-Zone.ru › OpenJDK 17

Класс 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, 2021, 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://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/invoke/SerializedLambda.html

Spec-Zone.ru

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