Spec-Zone.ru › OpenJDK 17

Класс ConstantCallSite

java.lang.Object
java.lang.invoke.CallSite
java.lang.invoke.ConstantCallSite
public 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, 2021, 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/17/docs/api/java.base/java/lang/invoke/ConstantCallSite.html

Spec-Zone.ru

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