Spec-Zone.ru › OpenJDK 24

Класс ConstantCallSite

java.lang.Object
java.lang.invoke.CallSite
java.lang.invoke.ConstantCallSite
public non-sealed class ConstantCallSite extends CallSite
ConstantCallSite — это CallSite, цель которого постоянна и никогда не может быть изменена. Инструкции invokedynamic, связанные с ConstantCallSite, постоянно привязаны к цели вызова.
С:
1.7

Краткое описание конструкторов

ConstantCallSite(MethodHandle target)
ConstantCallSite(MethodType targetType, MethodHandle createTargetHook)
Модификатор Конструктор Описание
Создаёт сайт вызова с постоянной целью.
protected
Создаёт сайт вызова с постоянной целью, потенциально привязанный к самому сайту вызова.

Краткое описание методов

Модификатор и тип Метод Описание
final MethodHandle dynamicInvoker()
Возвращает постоянную цель этого сайта вызова.
final MethodHandle getTarget()
Возвращает целевой метод сайта вызова, который ведет себя как поле final класса ConstantCallSite.
final void setTarget(MethodHandle ignore)
Всегда выбрасывает UnsupportedOperationException.

Методы, объявленные в классе java.lang.invoke.CallSite

type

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

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 не завершён
См. также:
  • ConstantCallSite
  • VolatileCallSite
  • CallSite.setTarget(java.lang.invoke.MethodHandle)
  • getTarget()
  • MutableCallSite.getTarget()
  • VolatileCallSite.getTarget()

setTarget

public final void setTarget(MethodHandle ignore)
Всегда выбрасывает UnsupportedOperationException. Этот тип сайта вызова не может изменить свою цель.
Определено в:
setTarget в классе CallSite
Параметры:
ignore — новая цель, предлагаемая для сайта вызова, которая игнорируется
Исключения:
UnsupportedOperationException — потому что этот тип сайта вызова не может изменить свою цель
См. также:
  • CallSite.getTarget()
  • setTarget(java.lang.invoke.MethodHandle)
  • MutableCallSite.setTarget(java.lang.invoke.MethodHandle)
  • VolatileCallSite.setTarget(java.lang.invoke.MethodHandle)

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

Spec-Zone.ru

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