Spec-Zone.ru › OpenJDK 25

Интерфейс InvokeInstruction

Все суперинтерфейсы:
ClassFileElement, CodeElement, Instruction
public sealed interface InvokeInstruction extends Instruction
Моделирует инструкцию вызова метода в массиве code атрибута Code, отличную от invokedynamic. Соответствующие коды операций имеют вид Opcode.Kind.INVOKE. При обходе элементов CodeModel передаётся как CodeElement.

Инструкция вызова метода является составной:

InvokeInstruction(
    Opcode opcode,
    MethodRefEntry | InterfaceMethodRefEntry method)
)
где method должен быть InterfaceMethodRefEntry для кода операции invokeinterface и MethodRefEntry для кода операции invokevirtual. invokestatic и invokespecial могут иметь запись любого из этих типов для method.
Начиная с:
24
См. также:
  • Opcode.Kind.INVOKE
  • CodeBuilder::invoke

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

Модификатор и тип Метод Описание
int count()
Возвращает значение count инструкции invokeinterface или 0 для других инструкций.
boolean isInterface()
Возвращает, является ли интерфейсом класс или интерфейс, содержащий метод.
MemberRefEntry method()
Возвращает константу MethodRefEntry или InterfaceMethodRefEntry, описанную этой инструкцией.
default Utf8Entry name()
Возвращает имя метода.
static InvokeInstruction of(Opcode op, ClassEntry owner, NameAndTypeEntry nameAndType, boolean isInterface)
Возвращает инструкцию вызова.
static InvokeInstruction of(Opcode op, ClassEntry owner, Utf8Entry name, Utf8Entry type, boolean isInterface)
Возвращает инструкцию вызова.
static InvokeInstruction of(Opcode op, MemberRefEntry method)
Возвращает инструкцию вызова.
default ClassEntry owner()
Возвращает класс или интерфейс, содержащий метод.
default Utf8Entry type()
Возвращает строку дескриптора метода.
default MethodTypeDesc typeSymbol()
Возвращает символический дескриптор типа метода.

Методы, объявленные в интерфейсе Instruction

opcode, sizeInBytes

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

method

MemberRefEntry method()
Возвращает константу MethodRefEntry или InterfaceMethodRefEntry, описанную этой инструкцией.
Возвращает:
константу MethodRefEntry или InterfaceMethodRefEntry, описанную этой инструкцией

isInterface

boolean isInterface()
Возвращает, является ли интерфейсом класс или интерфейс, содержащий метод.
Возвращает:
является ли интерфейсом класс или интерфейс, содержащий метод

count

int count()
Возвращает значение count инструкции invokeinterface или 0 для других инструкций.

Для инструкции invokeinterface это значение должно быть эквивалентно сумме размеров слотов всех аргументов плюс единица, что равно глубине стека операндов, потребляемой этой инструкцией вызова метода интерфейса.

Возвращает:
значение count инструкции invokeinterface или 0 для других инструкций
См. Спецификацию виртуальной машины Java:
6.5.invokeinterface invokeinterface

owner

default ClassEntry owner()
Возвращает класс или интерфейс, содержащий метод.
Возвращает:
класс или интерфейс, содержащий метод

name

default Utf8Entry name()
Возвращает имя метода.
Возвращает:
имя метода

type

default Utf8Entry type()
Возвращает строку дескриптора метода.
Примечание API:
Символический дескриптор типа метода доступен через typeSymbol().
Возвращает:
строку дескриптора метода

typeSymbol

default MethodTypeDesc typeSymbol()
Возвращает символический дескриптор типа метода.
Возвращает:
символический дескриптор типа метода

of

static InvokeInstruction of(Opcode op, MemberRefEntry method)
Возвращает инструкцию вызова.
Параметры:
op — код операции для конкретного типа инструкции вызова, который должен иметь вид Opcode.Kind.INVOKE
method — запись пула констант, описывающая метод
Возвращает:
инструкцию вызова
Вызывает исключение:
IllegalArgumentException — если вид кода операции не Opcode.Kind.INVOKE

of

static InvokeInstruction of(Opcode op, ClassEntry owner, Utf8Entry name, Utf8Entry type, boolean isInterface)
Возвращает инструкцию вызова.
Параметры:
op — код операции для конкретного типа инструкции вызова, который должен иметь вид Opcode.Kind.INVOKE
owner — класс, содержащий метод
name — имя метода
type — дескриптор метода
isInterface — является ли класс, содержащий метод, интерфейсом
Возвращает:
инструкцию вызова
Вызывает исключение:
IllegalArgumentException — если вид кода операции не Opcode.Kind.INVOKE

of

static InvokeInstruction of(Opcode op, ClassEntry owner, NameAndTypeEntry nameAndType, boolean isInterface)
Возвращает инструкцию вызова.
Параметры:
op — код операции для конкретного типа инструкции вызова, который должен иметь вид Opcode.Kind.INVOKE
owner — класс, содержащий метод
nameAndType — имя и тип метода
isInterface — является ли класс, содержащий метод, интерфейсом
Возвращает:
инструкцию вызова
Вызывает исключение:
IllegalArgumentException — если вид кода операции не Opcode.Kind.INVOKE

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по 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/classfile/instruction/InvokeInstruction.html

Spec-Zone.ru

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