Класс ConstantCallSite
public non-sealed class ConstantCallSite extends CallSite
ConstantCallSite — это CallSite с постоянной целью, которую невозможно изменить. Инструкция invokedynamic, связанная с ConstantCallSite, навсегда привязана к цели точки вызова.- Начиная с:
- 1.7
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
| Создает точку вызова с постоянной целью. |
||
protected |
Создает точку вызова с постоянной целью, которая может быть привязана к самой точке вызова. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final MethodHandle |
dynamicInvoker() |
Возвращает постоянную цель этой точки вызова. |
final MethodHandle |
getTarget() |
Возвращает целевой метод точки вызова, который ведет себя как поле final объекта ConstantCallSite. |
final void |
setTarget |
Всегда выбрасывает UnsupportedOperationException. |
Методы, объявленные в классе CallSite
type | Модификатор и тип | Метод | Описание |
|---|---|---|
MethodType |
type() |
Возвращает тип цели этой точки вызова. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект какому-либо другому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Финализация объявлена устаревшей и может быть удалена в одном из следующих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого объекта Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Переводит текущий поток в состояние ожидания до пробуждения, обычно вследствие вызова notify или interrupt. |
final void |
wait |
Переводит текущий поток в состояние ожидания до пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Переводит текущий поток в состояние ожидания до пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание конструкторов
ConstantCallSite
public ConstantCallSite(MethodHandle target)
- Параметры:
-
target— цель, которая будет навсегда связана с этой точкой вызова - Исключения:
-
NullPointerException— если предложенная цель равна null
ConstantCallSite
protected ConstantCallSite(MethodType targetType, MethodHandle createTargetHook) throws Throwable
Во время создания точки вызова вызывается createTargetHook для получения фактической цели, как если бы был выполнен вызов вида (MethodHandle) createTargetHook.invoke(this).
Обратите внимание: пользовательский код не может выполнить такое действие непосредственно в конструкторе подкласса, поскольку цель должна быть зафиксирована до завершения конструктора ConstantCallSite.
Говорят, что этот хук привязывает точку вызова к дескриптору метода-цели; типичным действием было бы someTarget.bindTo(this). Однако хук может выполнять любые действия, в том числе игнорировать точку вызова и возвращать постоянную цель.
Результатом, возвращаемым хуком, должен быть дескриптор метода точно того же типа, что и точка вызова.
Во время вызова хука новый объект ConstantCallSite находится в частично сконструированном состоянии. В этом состоянии вызов getTarget или любая другая попытка использовать цель приведет к IllegalStateException. В любой момент можно получить тип точки вызова с помощью метода type.
- Параметры:
-
targetType— тип дескриптора метода, который будет навсегда связан с этой точкой вызова -
createTargetHook— дескриптор метода, который нужно вызвать (для точки вызова), чтобы получить ее цель - Исключения:
-
WrongMethodTypeException— если хук нельзя вызвать с требуемыми аргументами или если цель, возвращенная хуком, имеет тип, отличный от указанногоtargetType -
NullPointerException— если хук возвращает значение null -
ClassCastException— если хук возвращает объект, отличный отMethodHandle -
Throwable— любое другое исключение, выброшенное функцией-хуком
Подробное описание методов
getTarget
public final MethodHandle getTarget()
final объекта ConstantCallSite. Иными словами, цель всегда имеет исходное значение, переданное конструктору, создавшему этот экземпляр.- Определено в:
-
getTargetв классеCallSite - Возвращает:
- неизменяемое состояние привязки этой точки вызова — постоянный дескриптор метода
- Исключения:
-
IllegalStateException— если конструкторConstantCallSiteеще не завершил работу - См. также:
setTarget
public final void setTarget(MethodHandle ignore)
UnsupportedOperationException. Этот тип точки вызова не может изменить свою цель.- Определено в:
-
setTargetв классеCallSite - Параметры:
-
ignore— новая цель, предлагаемая для точки вызова; она игнорируется - Исключения:
-
UnsupportedOperationException— поскольку этот тип точки вызова не может изменить свою цель - См. также:
dynamicInvoker
public final MethodHandle dynamicInvoker()
CallSite.dynamicInvoker.- Определено в:
-
dynamicInvokerв классеCallSite - Возвращает:
- неизменяемое состояние привязки этой точки вызова — постоянный дескриптор метода
- Исключения:
-
IllegalStateException— если конструкторConstantCallSiteеще не завершил работу
© 1993, 2025, 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.