Класс CallSiteDescriptor
public class CallSiteDescriptor extends SecureLookupSupplier
MethodHandles.Lookup класса вызывающего объекта, в котором происходит вызов, динамической операции в узле вызова и типа метода узла вызова. CallSiteDescriptor объекты используются в Dynalink для захвата и хранения этих параметров для последующего использования DynamicLinker. Конструкторы встроенных реализаций RelinkableCallSite все принимают описание узла вызова.
Описания узлов вызова должны быть неизменяемыми. Вы можете использовать этот класс как есть или наследовать от него, особенно если вам нужно добавить дополнительную информацию в описания (обычно значения, переданные в дополнительные параметры методу инициализации). Поскольку описания должны быть неизменяемыми, вы можете организовать кэш для эквивалентных описаний, чтобы узлы вызова могли их совместно использовать.
Класс расширяет SecureLookupSupplier для проверки доступа с обеспечением безопасности к объекту MethodHandles.Lookup , который он несёт. Этот поиск должен использоваться для поиска обработчиков методов, которые следует установить в качестве целей узла вызова, описываемого этим описанием.
Краткое описание полей
Поля, объявленные в классе jdk.dynalink.SecureLookupSupplier
GET_LOOKUP_PERMISSION_NAME
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
CallSiteDescriptor |
Создаёт новое описание узла вызова. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final CallSiteDescriptor |
changeMethodType |
Находит или создаёт описание узла вызова, отличающееся только типом метода от текущего описания. |
protected CallSiteDescriptor |
changeMethodTypeInternal |
Находит или создаёт описание узла вызова, отличающееся только типом метода от текущего описания. |
final CallSiteDescriptor |
changeOperation |
Находит или создаёт описание узла вызова, отличающееся только операцией от текущего описания. |
protected CallSiteDescriptor |
changeOperationInternal |
Находит или создаёт описание узла вызова, отличающееся только операцией от текущего описания. |
boolean |
equals |
Возвращает true, если это описание узла вызова равно переданному объекту. |
final MethodType |
getMethodType() |
Тип метода в узле вызова. |
final Operation |
getOperation() |
Возвращает операцию в узле вызова. |
int |
hashCode() |
Возвращает хеш-код, основанный на значении, этого описания узла вызова, вычисленный из операции, типа метода и класса объекта поиска и режимов поиска. |
String |
toString() |
Возвращает строковое представление этого описания узла вызова в формате name(parameterTypes)returnType@lookup. |
Методы, объявленные в классе jdk.dynalink.SecureLookupSupplier
getLookup, getLookupPrivileged
Подробное описание конструкторов
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)
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)
changeOperation(Operation) будет брошено исключение AssertionError. - Параметры:
-
newOperation- новая операция - Возвращает:
- дескриптор места вызова с изменённой операцией.
equals
public boolean equals(Object obj)
MethodHandles.Lookup.lookupClass() и MethodHandles.Lookup.lookupModes().- Переопределяет:
-
equalsв классеObject - Параметры:
-
obj- объект ссылки для сравнения. - Возвращает:
-
trueесли этот объект такой же, как аргумент obj;falseв противном случае. - См. также:
hashCode
public int hashCode()
- Переопределяет:
-
hashCodeв классе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