Spec-Zone.ru › OpenJDK 8

Класс 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 согласуются с фактически захваченным лямбда-выражением этим классом.

См. также:
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()

Получение сигнатуры метода реализации.

String getInstantiatedMethodType()

Получение сигнатуры основного метода функционального интерфейса после подстановки типов переменных их экземплярами из места захвата.

String toString()

Возвращает строковое представление объекта.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, 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 - аргумент для захвата
Возвращает:
динамический аргумент в месте захвата лямбда-выражения

toString

public String toString()

Описание скопировано из класса: Object

Возвращает строковое представление объекта. В общем случае, метод toString возвращает строку, которая «текстово представляет» этот объект. Результат должен быть кратким, но информативным представлением, удобным для чтения человеком. Рекомендуется, чтобы все подклассы переопределяли этот метод.

Метод toString для класса Object возвращает строку, состоящую из имени класса, экземпляром которого является объект, символа «@» и неозначенного шестнадцатеричного представления хэш-кода объекта. Другими словами, этот метод возвращает строку, равную значению:

getClass().getName() + '@' + Integer.toHexString(hashCode())
Переопределяет:
toString в классе Object
Возвращает:
строковое представление объекта.

© 1993, 2020, 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