Spec-Zone.ru › OpenJDK 24

Интерфейс CharacterRangeInfo

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

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

Since:
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()
Возвращает флаги этой записи диапазона символов.

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

  • 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 Создатель.
  • CharacterRange.FLAG_BRANCH_TRUE Условие, закодированное в инструкции ветвления, не инвертировано по сравнению с соответствующим условием ветвления в исходном коде. То есть фактический переход выполняется только тогда, когда условие ветвления исходного кода истинно. Записи этого типа генерируются только для условий, которые перечислены в описании флага CRT_FLOW_CONTROLLER. Диапазон исходного кода для записи содержит управляющее потоком выражение. Поле start_pc для записи этого типа должно указывать на инструкцию ветвления: if_acmp, if_icmp, if, ifnonull, ifnull или goto. CRT_BRANCH_TRUE и CRT_BRANCH_FALSE - это специальные типы записей, которые можно использовать для определения того, какая ветвь условия была выбрана во время выполнения.
  • CharacterRange.FLAG_BRANCH_FALSE Условие, закодированное в инструкции ветвления, инвертировано по сравнению с соответствующим условием ветвления в исходном коде. То есть фактический переход выполняется только тогда, когда условие ветвления исходного кода ложно. Записи этого типа генерируются только для условий, которые перечислены в описании флага CRT_FLOW_CONTROLLER. Диапазон исходного кода для записи содержит управляющее потоком выражение. Поле start_pc для записи этого типа должно указывать на инструкцию ветвления: if_acmp, if_icmp, if, ifnonull, ifnull или goto.

Все биты элемента флагов, не назначенные выше, зарезервированы для будущего использования. Они должны быть установлены в ноль в сгенерированных файлах классов и должны игнорироваться реализациями виртуальной машины 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 - флаги этой записи
Возвращает:
запись диапазона символов

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/classfile/attribute/CharacterRangeInfo.html

Spec-Zone.ru

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