Класс CallSiteDescriptor

public class CallSiteDescriptor
extends SecureLookupSupplier

Описания сайтов вызова содержат всю необходимую информацию для связывания сайта вызова. Эта информация обычно передается в качестве параметров методам загрузки и состоит из объекта MethodHandles.Lookup класса вызывающего метода, в котором происходит вызов, динамической операции на сайте вызова и типа метода сайта вызова. CallSiteDescriptor объекты используются в Dynalink для захвата и хранения этих параметров для последующего использования DynamicLinker.

Конструкторы встроенных реализаций RelinkableCallSite принимают описание сайта вызова.

Описания сайтов вызова должны быть неизменяемыми. Вы можете использовать этот класс как есть, или вы можете наследоваться от него, особенно если вам нужно добавить дополнительную информацию в описания (обычно, значения, передаваемые в дополнительных параметрах методу загрузки). Поскольку описания должны быть неизменяемыми, вы можете создать кеш эквивалентных описаний, чтобы сайты вызова могли использовать их совместно.

Класс расширяет SecureLookupSupplier для обеспечения проверки доступа к объекту MethodHandles.Lookup, который он несет. Этот поиск должен использоваться для поиска дескрипторов методов, которые нужно установить в качестве целей сайта вызова, описываемого этим дескриптором.

Поля

Поля, объявленные в классе jdk.dynalink.SecureLookupSupplier

GET_LOOKUP_PERMISSION_NAME

Конструкторы

Конструктор Описание
CallSiteDescriptor​(MethodHandles.Lookup lookup, Operation operation, MethodType methodType)

Создает новый дескриптор сайта вызова.

Методы

Модификатор и тип Метод Описание
CallSiteDescriptor changeMethodType​(MethodType newMethodType)

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

protected CallSiteDescriptor changeMethodTypeInternal​(MethodType newMethodType)

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

CallSiteDescriptor changeOperation​(Operation newOperation)

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

protected CallSiteDescriptor changeOperationInternal​(Operation newOperation)

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

boolean equals​(Object obj)

Возвращает true, если это описание сайта вызова равно переданному объекту.

MethodType getMethodType()

Тип метода на сайте вызова.

Operation getOperation()

Возвращает операцию на сайте вызова.

int hashCode()

Возвращает хэш-код этого описания сайта вызова, вычисленный на основе его операции, типа метода и класса поиска объекта поиска и режимов поиска.

String toString()

Возвращает строковое представление этого описания сайта вызова в формате name(parameterTypes)returnType@lookup.

Методы, объявленные в классе jdk.dynalink.SecureLookupSupplier

getLookup, getLookupPrivileged

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

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Конструкторы

CallSiteDescriptor

public CallSiteDescriptor(MethodHandles.Lookup lookup,
                          Operation operation,
                          MethodType methodType)

Создает новый дескриптор сайта вызова.

Параметры:
lookup - объект поиска, описывающий класс, к которому относится сайт вызова. При создании описаний из метода загрузки java.lang.invoke, это должен быть поиск, переданный в метод загрузки.
operation - динамическая операция на сайте вызова.
methodType - тип метода сайта вызова. При создании описаний из метода загрузки java.lang.invoke, это должен быть тип метода, переданный в метод загрузки.

Методы

getOperation

public final Operation getOperation()

Возвращает операцию на сайте вызова.

Возвращает:
операция на сайте вызова.

getMethodType

public final MethodType getMethodType()

Тип метода на сайте вызова.

Возвращает:
тип метода на сайте вызова.

changeMethodType

public final CallSiteDescriptor changeMethodType(MethodType newMethodType)

Находит или создает описание сайта вызова, которое отличается от этого описания только типом метода. Вызывает changeMethodTypeInternal(MethodType).

Параметры:
newMethodType - новый тип метода
Возвращает:
описание сайта вызова с измененным типом метода.
Исключения:
NullPointerException - если newMethodType равно null.

changeMethodTypeInternal

protected CallSiteDescriptor changeMethodTypeInternal(MethodType newMethodType)

Находит или создает описание сайта вызова, которое отличается от этого описания только типом метода. Подклассы должны переопределять этот метод для возвращения объекта своего точного класса. Если переопределенный метод изменяет что-либо, кроме типа метода в описании (его класс, поиск или операция), или возвращает null, из changeMethodType(MethodType) будет выброшено AssertionError.

Параметры:
newMethodType - новый тип метода
Возвращает:
описание сайта вызова с измененным типом метода.

changeOperation

public final CallSiteDescriptor changeOperation(Operation newOperation)

Находит или создает описание сайта вызова, которое отличается от этого описания только операцией. Вызывает changeOperationInternal(Operation).

Параметры:
newOperation - новая операция
Возвращает:
описание сайта вызова с измененной операцией.
Исключения:
NullPointerException - если newOperation равно null.
SecurityException - если поиск дескриптора не является MethodHandles.publicLookup(), и менеджер безопасности присутствует, и проверка RuntimePermission("dynalink.getLookup") терпит неудачу. Это необходимо, поскольку изменение операции в описании сайта вызова позволяет создавать описания для произвольных операций с поиском.

changeOperationInternal

protected CallSiteDescriptor changeOperationInternal(Operation newOperation)

Находит или создает описание сайта вызова, которое отличается от этого описания только операцией. Подклассы должны переопределять этот метод для возвращения объекта своего точного класса. Если переопределенный метод изменяет что-либо, кроме операции в описании (его класс, поиск или тип метода), или возвращает null, из changeOperation(Operation) будет выброшено AssertionError.

Параметры:
newOperation - новая операция
Возвращает:
описание сайта вызова с измененной операцией.

equals

public boolean equals(Object obj)

Возвращает true, если это описание сайта вызова равно переданному объекту. Оно считается равным, если другой объект имеет точно тот же класс, их операции и типы методов равны, и их поиски имеют одинаковый MethodHandles.Lookup.lookupClass() и MethodHandles.Lookup.lookupModes().

Переопределяет:
equals в классе Object
Параметры:
obj - объект-ссылка для сравнения.
Возвращает:
true если этот объект такой же, как аргумент obj; false в противном случае.
См. также:
Object.hashCode(), HashMap

hashCode

public int hashCode()

Возвращает хэш-код этого описания сайта вызова, вычисленный на основе его операции, типа метода и класса поиска объекта поиска и режимов поиска.

Переопределяет:
hashCode в классе Object
Возвращает:
хэш-код, основанный на значении для этого описания сайта вызова.
См. также:
Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)

toString

public String toString()

Возвращает строковое представление этого описания сайта вызова в формате name(parameterTypes)returnType@lookup.

Переопределяет:
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.
https://docs.oracle.com/en/java/javase/11/docs/api/jdk.dynalink/jdk/dynalink/CallSiteDescriptor.html

Spec-Zone .ru
спецификации, руководства, описания, API