Класс 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. |
Подробное описание конструкторов
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.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/invoke/ConstantCallSite.html