Spec-Zone.ru › OpenJDK 21

Класс ConstantCallSite

java.lang.Object
java.lang.invoke.CallSite
java.lang.invoke.ConstantCallSite
public non-sealed class ConstantCallSite extends CallSite
A ConstantCallSite представляет собой CallSite, цель которого является постоянной и никогда не может быть изменена. Инструкции invokedynamic, связанные с ConstantCallSite, постоянно привязаны к цели вызова.
Since:
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, 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/java.base/java/lang/invoke/ConstantCallSite.html

Spec-Zone.ru

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