Spec-Zone.ru › OpenJDK 21

Класс 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().
Переопределяет:
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, 2023, 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/21/docs/api/jdk.dynalink/jdk/dynalink/CallSiteDescriptor.html

Spec-Zone.ru

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