Spec-Zone.ru › OpenJDK 17

Класс CallSiteDescriptor

java.lang.Object
jdk.dynalink.SecureLookupSupplier
jdk.dynalink.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)
Создаёт новое описание сайта вызова.

Краткое описание методов

Модификатор и тип Метод Описание
final CallSiteDescriptor changeMethodType(MethodType newMethodType)
Находит или создаёт описание сайта вызова, которое отличается только типом метода от этого описания.
protected CallSiteDescriptor changeMethodTypeInternal(MethodType newMethodType)
Находит или создаёт описание сайта вызова, которое отличается только типом метода от этого описания.
final CallSiteDescriptor changeOperation(Operation newOperation)
Находит или создаёт описание сайта вызова, которое отличается только операцией от этого описания.
protected CallSiteDescriptor changeOperationInternal(Operation newOperation)
Находит или создаёт описание сайта вызова, которое отличается только операцией от этого описания.
boolean equals(Object obj)
Возвращает true, если это описание сайта вызова равно переданному объекту.
final MethodType getMethodType()
Тип метода на сайте вызова.
final 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().
Overrides:
equals в классе Object
Параметры:
obj - объект-ссылка для сравнения.
Возвращает:
true если этот объект такой же, как аргумент obj; false в противном случае.
См. также:
  • Object.hashCode()
  • HashMap

hashCode

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

toString

public String toString()
Возвращает строковое представление этого описателя вызова, в формате name(parameterTypes)returnType@lookup.
Overrides:
toString в классе Object
Возвращает:
строковое представление объекта.

© 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/jdk.dynalink/jdk/dynalink/CallSiteDescriptor.html

Spec-Zone.ru

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