Класс 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) Создает |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
Object |
getCapturedArg(int i) Получение динамического аргумента в месте захвата лямбда-выражения. |
int |
getCapturedArgCount() Получение количества динамических аргументов в месте захвата лямбда-выражения. |
String |
getCapturingClass() Получение имени класса, захватившего это лямбда-выражение. |
String |
getFunctionalInterfaceClass() Получение имени вызываемого типа, в который это лямбда-выражение было преобразовано. |
String |
getFunctionalInterfaceMethodName() Получение имени основного метода функционального интерфейса, в который это лямбда-выражение было преобразовано. |
String |
getFunctionalInterfaceMethodSignature() Получение сигнатуры основного метода функционального интерфейса, в который это лямбда-выражение было преобразовано. |
String |
getImplClass() Получение имени класса, содержащего метод реализации. |
int |
getImplMethodKind() Получение типа обработчика метода (см. |
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())
© 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.