Класс 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().- Overrides:
-
equalsв классеObject - Параметры:
-
obj- объект-ссылка для сравнения. - Возвращает:
-
trueесли этот объект такой же, как аргумент obj;falseв противном случае. - См. также:
hashCode
public int hashCode()
- Overrides:
-
hashCodeв классе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