Spec-Zone.ru › OpenJDK 27

Класс 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.

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

type
Модификатор и тип Метод Описание
MethodType type()
Возвращает тип цели этой точки вызова.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
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(long timeoutMillis)
Переводит текущий поток в состояние ожидания до пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Переводит текущий поток в состояние ожидания до пробуждения, обычно вследствие вызова 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 еще не завершил работу
См. также:
  • ConstantCallSite
  • VolatileCallSite
  • CallSite.setTarget(MethodHandle)
  • getTarget()
  • MutableCallSite.getTarget()
  • VolatileCallSite.getTarget()

setTarget

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

dynamicInvoker

public final MethodHandle dynamicInvoker()
Возвращает постоянную цель этой точки вызова. Поскольку эта цель никогда не изменится, данный метод является корректной реализацией CallSite.dynamicInvoker.
Определено в:
dynamicInvoker в классе CallSite
Возвращает:
неизменяемое состояние привязки этой точки вызова — постоянный дескриптор метода
Исключения:
IllegalStateException — если конструктор ConstantCallSite еще не завершил работу

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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