Spec-Zone.ru › OpenJDK 25

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

Методы, объявленные в классе 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(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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/invoke/ConstantCallSite.html

Spec-Zone.ru

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