Spec-Zone.ru › OpenJDK 27

Интерфейс InterfaceType

Все суперинтерфейсы:
Accessible, Comparable<ReferenceType>, Mirror, ReferenceType, Type
public interface InterfaceType extends ReferenceType
Отражение интерфейса в целевой виртуальной машине. InterfaceType — это уточнение ReferenceType, применимое к настоящим интерфейсам в смысле определения JLS (не класс и не тип массива). Тип интерфейса никогда не возвращается методом ObjectReference.referenceType(), однако он может находиться в списке реализуемых интерфейсов для ClassType, возвращаемого этим методом.
Начиная с версии:
1.3
См. также:
  • ObjectReference

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

Модификатор и тип Метод Описание
List<ClassType> implementors()
Получает подготовленные в данный момент классы, непосредственно реализующие этот интерфейс.
default Value invokeMethod(ThreadReference thread, Method method, List<? extends Value> arguments, int options)
Вызывает указанный статический Method в целевой виртуальной машине.
List<InterfaceType> subinterfaces()
Получает подготовленные в данный момент интерфейсы, непосредственно расширяющие этот интерфейс.
List<InterfaceType> superinterfaces()
Получает интерфейсы, непосредственно расширяемые этим интерфейсом.

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

isPackagePrivate, isPrivate, isProtected, isPublic, modifiers
Модификатор и тип Метод Описание
boolean isPackagePrivate()
Определяет, отражает ли этот объект элемент с доступом на уровне пакета.
boolean isPrivate()
Определяет, отражает ли этот объект закрытый элемент.
boolean isProtected()
Определяет, отражает ли этот объект защищённый элемент.
boolean isPublic()
Определяет, отражает ли этот объект общедоступный элемент.
int modifiers()
Возвращает модификаторы языка программирования Java, закодированные целым числом.

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

compareTo
Модификатор и тип Метод Описание
int compareTo(ReferenceType o)
Сравнивает этот объект с указанным объектом, определяя порядок.

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

toString, virtualMachine
Модификатор и тип Метод Описание
String toString()
Возвращает строку с описанием этого отражения
VirtualMachine virtualMachine()
Получает VirtualMachine, которому принадлежит это отражение.

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

allFields, allLineLocations, allLineLocations, allMethods, availableStrata, classLoader, classObject, constantPool, constantPoolCount, defaultStratum, equals, failedToInitialize, fieldByName, fields, genericSignature, getValue, getValues, hashCode, instances, isAbstract, isFinal, isInitialized, isPrepared, isStatic, isVerified, locationsOfLine, locationsOfLine, majorVersion, methods, methodsByName, methodsByName, minorVersion, module, name, nestedTypes, sourceDebugExtension, sourceName, sourceNames, sourcePaths, visibleFields, visibleMethods
Модификатор и тип Метод Описание
List<Field> allFields()
Возвращает список, содержащий каждый Field, объявленный в этом типе, его суперклассах, реализованных интерфейсах и/или суперинтерфейсах.
List<Location> allLineLocations()
Возвращает список, содержащий объект Location для каждой исполняемой строки исходного кода в этом ссылочном типе.
List<Location> allLineLocations(String stratum, String sourceName)
Возвращает список, содержащий объект Location для каждой исполняемой строки исходного кода в этом ссылочном типе.
List<Method> allMethods()
Возвращает список, содержащий каждый Method, объявленный в этом типе, его суперклассах, реализованных интерфейсах и/или суперинтерфейсах.
List<String> availableStrata()
Возвращает доступные пласты для этого ссылочного типа.
ClassLoaderReference classLoader()
Получает объект загрузчика классов, загрузившего класс, соответствующий этому типу.
ClassObjectReference classObject()
Возвращает объект класса, соответствующий этому типу в целевой виртуальной машине.
byte[] constantPool()
Возвращает необработанные байты пула констант в формате элемента constant_pool из формата файлов классов, описанного в спецификации виртуальной машины Java.
int constantPoolCount()
Возвращает количество записей в пуле констант плюс один.
String defaultStratum()
Возвращает пласт по умолчанию для этого ссылочного типа.
boolean equals(Object obj)
Сравнивает указанный объект с этим ReferenceType на равенство.
boolean failedToInitialize()
Определяет, завершилась ли неудачей инициализация этого класса.
Field fieldByName(String fieldName)
Находит видимое поле Field с указанным однозначным именем.
List<Field> fields()
Возвращает список, содержащий каждое поле Field, объявленное в этом типе.
String genericSignature()
Получает обобщённую сигнатуру этого типа, если она имеется.
Value getValue(Field field)
Получает Value указанного статического поля Field этого типа.
Map<Field,Value> getValues(List<? extends Field> fields)
Возвращает карту, содержащую Value каждого статического поля Field из указанного списка.
int hashCode()
Возвращает значение хеш-кода для этого ObjectReference.
List<ObjectReference> instances(long maxInstances)
Возвращает экземпляры этого ReferenceType.
boolean isAbstract()
Определяет, был ли этот тип объявлен абстрактным.
boolean isFinal()
Определяет, был ли этот тип объявлен окончательным.
boolean isInitialized()
Определяет, был ли инициализирован этот тип.
boolean isPrepared()
Определяет, был ли подготовлен этот тип.
boolean isStatic()
Определяет, был ли этот тип объявлен статическим.
boolean isVerified()
Определяет, был ли проверен этот тип.
List<Location> locationsOfLine(int lineNumber)
Возвращает список, содержащий все объекты Location, соответствующие указанному номеру строки.
List<Location> locationsOfLine(String stratum, String sourceName, int lineNumber)
Возвращает список, содержащий все объекты Location, соответствующие указанному номеру строки.
int majorVersion()
Возвращает старший номер версии класса, определённый в формате файлов классов спецификации виртуальной машины Java.
List<Method> methods()
Возвращает список, содержащий каждый метод Method, объявленный непосредственно в этом типе.
List<Method> methodsByName(String name)
Возвращает список, содержащий каждый видимый метод Method с указанным именем.
List<Method> methodsByName(String name, String signature)
Возвращает список, содержащий каждый видимый метод Method с указанными именем и сигнатурой.
int minorVersion()
Возвращает младший номер версии класса, определённый в формате файлов классов спецификации виртуальной машины Java.
default ModuleReference module()
Получает объект модуля, содержащего класс, соответствующий этому типу.
String name()
Возвращает имя этого объекта ReferenceType.
List<ReferenceType> nestedTypes()
Возвращает список, содержащий объекты ReferenceType, объявленные внутри этого типа и загруженные в данный момент в виртуальную машину.
String sourceDebugExtension()
Получает расширение отладочной информации исходного кода этого типа.
String sourceName()
Получает идентифицирующее имя исходного кода, соответствующего объявлению этого типа.
List<String> sourceNames(String stratum)
Получает идентифицирующие имена всех исходных текстов, соответствующих объявлению этого типа.
List<String> sourcePaths(String stratum)
Получает пути к исходному коду, соответствующему объявлению этого типа.
List<Field> visibleFields()
Возвращает список, содержащий каждое не скрытое и однозначное поле Field этого типа.
List<Method> visibleMethods()
Возвращает список, содержащий каждый метод Method, объявленный в этом типе или унаследованный им.

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

signature
Модификатор и тип Метод Описание
String signature()
Возвращает сигнатуру типа для этого типа.

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

superinterfaces

List<InterfaceType> superinterfaces()
Получает интерфейсы, непосредственно расширяемые этим интерфейсом. Возвращённый список содержит только те интерфейсы, расширение которых объявлено этим интерфейсом.
Возвращает:
список объектов InterfaceType, каждый из которых отражает интерфейс, расширяемый этим интерфейсом. Если таких интерфейсов нет, возвращает список нулевой длины.
Выбрасывает:
ClassNotPreparedException — если этот класс ещё не был подготовлен.

subinterfaces

List<InterfaceType> subinterfaces()
Получает подготовленные в данный момент интерфейсы, непосредственно расширяющие этот интерфейс. Возвращённый список содержит только те интерфейсы, в предложении "extends" которых указан этот интерфейс.
Возвращает:
список объектов InterfaceType, каждый из которых отражает интерфейс, расширяющий этот интерфейс. Если таких интерфейсов нет, возвращает список нулевой длины.

implementors

List<ClassType> implementors()
Получает подготовленные в данный момент классы, непосредственно реализующие этот интерфейс. Возвращённый список содержит только те классы, в предложении "implements" которых указан этот интерфейс.
Возвращает:
список объектов ClassType, каждый из которых отражает класс, реализующий этот интерфейс. Если таких классов нет, возвращает список нулевой длины.

invokeMethod

default Value invokeMethod(ThreadReference thread, Method method, List<? extends Value> arguments, int options) throws InvalidTypeException, ClassNotLoadedException, IncompatibleThreadStateException, InvocationException
Вызывает указанный статический Method в целевой виртуальной машине. Указанный метод должен быть определён в этом интерфейсе. Метод должен быть статическим, но не статическим инициализатором.

Вызов метода выполняется в указанном потоке. Вызвать метод можно только в том случае, если указанный поток был приостановлен событием, произошедшим в этом потоке. Вызов метода не поддерживается, если целевая виртуальная машина приостановлена посредством VirtualMachine.suspend() или если указанный поток приостановлен посредством ThreadReference.suspend().

Указанный метод вызывается с аргументами из указанного списка аргументов. Вызов метода является синхронным; этот метод не возвращает управление, пока вызванный метод не завершится в целевой виртуальной машине. Если вызванный метод выбрасывает исключение, этот метод выбрасывает InvocationException, содержащее отражение объекта исключения, которое было выброшено.

Аргументы-объекты должны быть совместимы по присваиванию с типом аргумента (это означает, что тип аргумента должен быть загружен загрузчиком классов охватывающего класса). Примитивные аргументы должны быть совместимы по присваиванию с типом аргумента или преобразуемы к нему без потери информации. Если вызываемый метод принимает переменное число аргументов, последний тип аргумента является массивом некоторого типа компонентов. Аргумент на соответствующей позиции можно опустить, задать как null, передать как массив того же типа компонентов либо как аргумент типа компонентов с последующим любым количеством других аргументов того же типа. Если аргумент опущен, передаётся массив типа компонентов нулевой длины. Тип компонентов может быть примитивным типом. Автоупаковка не поддерживается. Дополнительные сведения о совместимости по присваиванию см. в разделе 5.2 Спецификации языка Java.

По умолчанию на время вызова метода все потоки целевой виртуальной машины возобновляются, если до этого они были приостановлены событием, посредством VirtualMachine.suspend() или ThreadReference.suspend(). Это делается для предотвращения взаимоблокировок, которые возникнут, если какие-либо потоки владеют ресурсами, например мониторами, необходимыми вызываемому методу. Однако обратите внимание, что это неявное возобновление действует точно так же, как ThreadReference.resume(), поэтому, если счётчик приостановки потока больше 1, поток останется приостановленным во время вызова, и взаимоблокировка всё ещё может возникнуть. По умолчанию после завершения вызова все потоки целевой виртуальной машины приостанавливаются независимо от их состояния до вызова. Во время вызова могут возникать точки останова и другие события. Это может привести к описанным выше взаимоблокировкам. Взаимоблокировка также может возникнуть, если invokeMethod вызван из потока обработчика событий клиента. В этом случае этот поток будет ожидать завершения invokeMethod и не прочитает EventSet, поступивший для нового события. Если этот новый EventSet имеет значение SUSPEND_ALL, произойдёт взаимоблокировка, поскольку возобновить EventSet будет некому. Чтобы избежать этого, перед вызовом invokeMethod следует отключить все EventRequests либо не вызывать invokeMethod из потока обработчика событий клиента.

Возобновления других потоков во время вызова можно избежать, указав битовый флаг ClassType.INVOKE_SINGLE_THREADED в аргументе options; однако защита от описанных выше взаимоблокировок или возможность их устранения отсутствуют, поэтому этот параметр следует использовать с большой осторожностью. Будет возобновлён только указанный поток (как описано выше для всех потоков). По завершении однопоточного вызова вызывающий поток будет приостановлен снова. Обратите внимание, что потоки, запущенные во время однопоточного вызова, не будут приостановлены после его завершения.

Если во время вызова целевая виртуальная машина отключится (например, посредством VirtualMachine.dispose()), вызов метода продолжится.

Примечание к API:
Виртуальные потоки обычно являются потоками пользовательского режима, планируемыми средой выполнения Java, а не операционной системой. Поэтому при использовании виртуальных потоков могут чаще возникать ситуации, в которых параметр ClassType.INVOKE_SINGLE_THREADED приводит к взаимоблокировке. Например, приостановка всех потоков целевой виртуальной машины может приостановить потоки, поддерживающие механизм таймеров виртуальных потоков, и тем самым привести к взаимоблокировке таких методов, как Thread.sleep(long).
Параметры:
thread — поток, в котором следует выполнить вызов.
method — метод Method, который следует вызвать.
arguments — список аргументов Value, передаваемых вызываемому методу. Значения из списка сопоставляются аргументам в порядке их следования в сигнатуре метода.
options — целочисленные битовые флаги параметров.
Возвращает:
отражение Value возвращаемого значения вызванного метода.
Выбрасывает:
IllegalArgumentException — если метод не является членом этого интерфейса, размер списка аргументов не соответствует количеству объявленных аргументов метода, метод не является статическим или является статическим инициализатором.
ClassNotLoadedException — если какой-либо тип аргумента ещё не загружен соответствующим загрузчиком классов.
IncompatibleThreadStateException — если указанный поток не был приостановлен событием.
InvocationException — если при вызове метода в целевой виртуальной машине возникло исключение.
InvalidTypeException — если аргументы не соответствуют этому требованию: аргументы-объекты должны быть совместимы по присваиванию с типом аргумента. Это означает, что тип аргумента должен быть загружен загрузчиком классов охватывающего класса. Примитивные аргументы должны быть совместимы по присваиванию с типом аргумента или преобразуемы к нему без потери информации. Дополнительные сведения о совместимости по присваиванию см. в разделе 5.2 JLS.
VMCannotBeModifiedException — если виртуальная машина доступна только для чтения; см. VirtualMachine.canBeModified().
Начиная с версии:
1.8

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