Интерфейс CharacterRangeInfo
public sealed interface CharacterRangeInfo
CharacterRangeTableAttribute. Каждая запись диапазона символов связывает диапазон индексов в массиве кодов с диапазоном позиций символов в исходном файле. Позиция символа в исходном файле представлена номером строки и номером столбца, и ее значение закодировано как lineNumber << 10 + columnNumber. Обратите внимание, что номера столбцов не совпадают с индексами байтов в столбце, так как в исходном файле могут присутствовать многобайтовые символы. Каждая запись диапазона символов включает флаг, указывающий на тип описываемого диапазона: оператор, присваивание, вызов метода и т.д.
- Since:
- 24
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
characterRangeEnd() |
Возвращает закодированную конечную позицию символов в исходном файле (исключая). |
int |
characterRangeStart() |
Возвращает закодированную начальную позицию символов в исходном файле (включая). |
int |
endPc() |
Возвращает конец индексов в массиве кодов (исключая). |
int |
flags() |
Возвращает флаги этой записи диапазона символов. |
static CharacterRangeInfo |
of |
Возвращает запись диапазона символов. |
int |
startPc() |
Возвращает начало индексов в массиве кодов (включая). |
Подробное описание методов
startPc
int startPc()
- Возвращает:
- начало индексов в массиве кодов (включая)
- См. также:
endPc
int endPc()
- Возвращает:
- конец индексов в массиве кодов (исключая)
- См. также:
characterRangeStart
int characterRangeStart()
- Возвращает:
- закодированное начало позиций символов в исходном файле (включая)
characterRangeEnd
int characterRangeEnd()
- Возвращает:
- закодированный конец позиций символов в исходном файле (исключая)
flags
int flags()
Значение элемента флагов описывает тип диапазона. Несколько флагов могут быть установлены в флагах.
-
CharacterRange.FLAG_STATEMENTДиапазон представляет оператор (кроме ExpressionStatement), StatementExpression (JLS 14.8), а также каждыйVariableDeclaratorId = VariableInitializerLocalVariableDeclarationStatement (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.
- Возвращает:
- флаги этой записи диапазона символов
- См. также:
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