Spec-Zone.ru › OpenJDK 27

Интерфейс CharacterRangeInfo

public sealed interface CharacterRangeInfo
Моделирует запись диапазона символов в CharacterRangeTableAttribute.

Каждая запись диапазона символов связывает диапазон индексов в массиве кода с диапазоном позиций символов в исходном файле. Позиция символа в исходном файле представлена номером строки и номером столбца, а её значение закодировано как lineNumber << 10 + columnNumber. Обратите внимание, что номера столбцов не совпадают с байтовыми индексами в столбце, поскольку в исходном файле могут присутствовать многобайтовые символы. Каждая запись диапазона символов содержит флаг, указывающий, какой тип диапазона описан: оператор, присваивание, вызов метода и т. д.

С:
24
См. также:
  • CharacterRangeTableAttribute.characterRangeTable()
  • CharacterRange

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

Модификатор и тип Метод Описание
int characterRangeEnd()
Возвращает закодированную конечную позицию символов в исходном файле, не включая её.
int characterRangeStart()
Возвращает закодированную начальную позицию символов в исходном файле, включая её.
int endPc()
Возвращает конечный индекс в массиве кода, не включая его.
int flags()
Возвращает флаги этой записи диапазона символов.
static CharacterRangeInfo of(int startPc, int endPc, int characterRangeStart, int characterRangeEnd, int flags)
Возвращает запись диапазона символов.
int startPc()
Возвращает начальный индекс в массиве кода, включая его.

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

startPc

int startPc()
Возвращает начальный индекс в массиве кода, включая его.
Возвращает:
начальный индекс в массиве кода, включая его
См. также:
  • CharacterRange.startScope()

endPc

int endPc()
Возвращает конечный индекс в массиве кода, не включая его.
Возвращает:
конечный индекс в массиве кода, не включая его
См. также:
  • CharacterRange.endScope()

characterRangeStart

int characterRangeStart()
Возвращает закодированную начальную позицию символов в исходном файле, включая её.
Возвращает:
закодированную начальную позицию символов в исходном файле, включая её

characterRangeEnd

int characterRangeEnd()
Возвращает закодированную конечную позицию символов в исходном файле, не включая её.
Возвращает:
закодированную конечную позицию символов в исходном файле, не включая её

flags

int flags()
Возвращает флаги этой записи диапазона символов.

Значение элемента flags описывает тип диапазона. В элементе flags может быть установлено несколько флагов.

  • CharacterRange.FLAG_STATEMENT Диапазон является оператором (за исключением ExpressionStatement), StatementExpression (JLS §14.8), а также каждым VariableDeclaratorId = VariableInitializer LocalVariableDeclarationStatement (JLS §14.4) или FieldDeclaration (JLS §8.3) в грамматике.
  • CharacterRange.FLAG_BLOCK Диапазон является блоком в грамматике.
  • CharacterRange.FLAG_ASSIGNMENT Диапазон является выражением присваивания — Expression1 AssignmentOperator Expression1 в грамматике, а также выражением инкремента или декремента (как префиксным, так и постфиксным).
  • CharacterRange.FLAG_FLOW_CONTROLLER Выражение, значение которого влияет на поток управления. Flowcon в следующих конструкциях:
    if ( Flowcon ) Statement [else Statement]
    for ( ForInitOpt ; [Flowcon] ; ForUpdateOpt ) Statement
    while ( Flowcon ) Statement
    do Statement while ( Flowcon ) ;
    switch ( Flowcon ) { SwitchBlockStatementGroups }
    Flowcon || Expression3
    Flowcon && Expression3
    Flowcon ? Expression : Expression1
    
  • CharacterRange.FLAG_FLOW_TARGET Оператор или выражение, на которое воздействует CRT_FLOW_CONTROLLER. Flowtarg в следующих конструкциях:
    if ( Flowcon ) Flowtarg [else Flowtarg]
    for ( ForInitOpt ; [Flowcon] ; ForUpdateOpt ) Flowtarg
    while ( Flowcon ) Flowtarg
    do Flowtarg while ( Flowcon ) ;
    Flowcon || Flowtarg
    Flowcon && Flowtarg
    Flowcon ? Flowtarg : Flowtarg
    
  • CharacterRange.FLAG_INVOKE Вызов метода. Например: идентификатор и аргументы.
  • CharacterRange.FLAG_CREATE Создание нового объекта. Например: new Creator.
  • CharacterRange.FLAG_BRANCH_TRUE Условие, закодированное в инструкции перехода, непосредственно входящей в диапазон кода этого элемента, не инвертировано относительно соответствующего условия перехода в исходном коде. То есть фактический переход выполняется тогда и только тогда, когда условие перехода в исходном коде истинно. Записи этого типа создаются только для условий, перечисленных в описании флага CRT_FLOW_CONTROLLER. Исходный диапазон записи содержит выражение, управляющее потоком выполнения. Поле start_pc записи этого типа должно указывать на инструкцию перехода: if_acmp<cond>, if_icmp<cond>, if<cond>, ifnonull, ifnull или goto. CRT_BRANCH_TRUE и CRT_BRANCH_FALSE — специальные типы записей, позволяющие определить, какая ветвь условия была выбрана во время выполнения.
  • CharacterRange.FLAG_BRANCH_FALSE Условие, закодированное в инструкции перехода, непосредственно входящей в диапазон кода этого элемента, инвертировано относительно соответствующего условия перехода в исходном коде. То есть фактический переход выполняется тогда и только тогда, когда условие перехода в исходном коде ложно. Записи этого типа создаются только для условий, перечисленных в описании флага CRT_FLOW_CONTROLLER. Исходный диапазон записи содержит выражение, управляющее потоком выполнения. Поле start_pc записи этого типа должно указывать на инструкцию перехода: if_acmp<cond>, if_icmp<cond>, if<cond>, ifnonull, ifnull или goto.

Все биты элемента flags, не назначенные выше, зарезервированы для будущего использования. В сгенерированных файлах классов им следует присваивать нулевое значение, а реализации виртуальной машины Java должны их игнорировать.

Возвращает:
флаги этой записи диапазона символов
См. также:
  • CharacterRange.flags()

of

static CharacterRangeInfo of(int startPc, int endPc, int characterRangeStart, int characterRangeEnd, int flags)
Возвращает запись диапазона символов.
Примечание к API:
Созданную запись нельзя записать в CodeBuilder. Вместо этого используйте CodeBuilder::characterRange.
Параметры:
startPc — начальный индекс в массиве кода, включая его
endPc — конечный индекс в массиве кода, не включая его
characterRangeStart — закодированная начальная позиция символов в исходном файле, включая её
characterRangeEnd — закодированная конечная позиция символов в исходном файле, не включая её
flags — флаги этой записи
Возвращает:
запись диапазона символов
Исключения:
IllegalArgumentException — если startPc, endPc или flags не является u2

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