Интерфейс CodeBuilder
- Все суперинтерфейсы:
ClassFileBuilder<CodeElement, CodeBuilder>, Consumer<CodeElement>
- Все известные суперинтерфейсы:
CodeBuilder.BlockCodeBuilder
public sealed interface CodeBuilder extends ClassFileBuilder<CodeElement, CodeBuilder> permits CodeBuilder.BlockCodeBuilder (not exhaustive)
Code (тел методов). MethodBuilder.withCode(Consumer) — основной способ получить построитель кода; ClassBuilder.withMethodBody(Utf8Entry, Utf8Entry, int, Consumer) — сокращённый способ. Существуют также производные построители кода, доступные через block(Consumer), который обрабатывает блоки кода, и transforming(CodeTransform, Consumer), который применяет преобразования к существующим обработчикам; для обоих сначала требуется построитель кода. Общие рекомендации и предупреждения по использованию построителей структур в формате файла class см. в ClassFileBuilder. В отличие от других построителей, порядок элементов в построителе кода имеет значение: он влияет на результирующий байт-код. Многие параметры API Class-File влияют на построители кода: ClassFile.DeadCodeOption и ClassFile.ShortJumpsOption влияют на результирующий байт-код, а ClassFile.DeadLabelsOption, ClassFile.DebugElementsOption, ClassFile.LineNumbersOption, ClassFile.StackMapsOption и ClassFile.AttributesProcessingOption влияют на результирующие атрибуты созданного атрибута Code; некоторые элементы, переданные построителю кода, в противном случае игнорируются.
Фабрики инструкций
CodeBuilder предоставляет удобные методы для создания инструкций (см. инструкции JVMS 6.5) по их мнемоническому обозначению с передачей необходимых операндов. - Инструкции, кодирующие операнды в своём коде операции, например
aload_<n>, используют те же фабрики, что и их обобщённые версии, напримерaload. Обратите внимание, что некоторые инструкции-константы, напримерiconst_1, не имеют обобщённых версий и поэтому используют собственные фабрики. - Инструкции, принимающие широкие операнды, например
ldc2_wилиwide, используют те же фабрики, что и их обычные версии, напримерldc(ConstantDesc). Обратите внимание, чтоgoto_wимеет собственную фабрику, чтобы избежать коротких переходов. - Фабрики инструкций
goto,instanceof,newиreturnназываются соответственноgoto_,instanceOf,new_иreturn_из-за конфликтов с ключевыми словами языка программирования Java. - Фабрики не предоставляются для инструкций
jsr,jsr_w,retиwide ret, которые не могут встречаться в файлах классов с основной версией 51 или выше. (JVMS 4.9.1) Их по-прежнему можно передавать черезClassFileBuilder.with(E).
- Начиная с версии:
- 24
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static interface |
CodeBuilder.BlockCodeBuilder |
Построитель блоков кода. |
static interface |
CodeBuilder.CatchBuilder |
Построитель для добавления блоков catch. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
default CodeBuilder |
aaload() |
Генерирует инструкцию для загрузки из массива reference. |
default CodeBuilder |
aastore() |
Генерирует инструкцию для сохранения в массив reference. |
default CodeBuilder |
aconst_null() |
Генерирует инструкцию, помещающую нулевой объект reference в стек операндов. |
int |
allocateLocal |
Возвращает слот локальной переменной для новой локальной переменной. |
default CodeBuilder |
aload |
Генерирует инструкцию для загрузки reference из локальной переменной. |
default CodeBuilder |
anewarray |
Генерирует инструкцию для создания нового массива reference. |
default CodeBuilder |
anewarray |
Генерирует инструкцию для создания нового массива reference. |
default CodeBuilder |
areturn() |
Генерирует инструкцию для возврата reference из этого метода. |
default CodeBuilder |
arraylength() |
Генерирует инструкцию для получения длины массива. |
default CodeBuilder |
arrayLoad |
Генерирует инструкцию для загрузки значения из массива. |
default CodeBuilder |
arrayStore |
Генерирует инструкцию для сохранения значения в массиве. |
default CodeBuilder |
astore |
Генерирует инструкцию для сохранения reference в локальной переменной. |
default CodeBuilder |
athrow() |
Генерирует инструкцию для выбрасывания исключения или ошибки. |
default CodeBuilder |
baload() |
|
default CodeBuilder |
bastore() |
|
default CodeBuilder |
bipush |
|
default CodeBuilder |
block |
Добавляет лексический блок в создаваемый метод. |
default CodeBuilder |
branch |
Генерирует инструкцию перехода. |
default CodeBuilder |
caload() |
Генерирует инструкцию для загрузки значения из массива char. |
default CodeBuilder |
castore() |
Генерирует инструкцию для сохранения значения в массиве char. |
default CodeBuilder |
characterRange |
Объявляет запись диапазона символов. |
default CodeBuilder |
checkcast |
Генерирует инструкцию для проверки, принадлежит ли объект заданному типу; если проверка не пройдена, выбрасывается ClassCastException. |
default CodeBuilder |
checkcast |
Генерирует инструкцию для проверки, принадлежит ли объект заданному типу; если проверка не пройдена, выбрасывается ClassCastException. |
default CodeBuilder |
conversion |
Генерирует инструкцию (или инструкции) для преобразования fromType в toType. |
default CodeBuilder |
d2f() |
|
default CodeBuilder |
d2i() |
|
default CodeBuilder |
d2l() |
|
default CodeBuilder |
dadd() |
Генерирует инструкцию для сложения двух значений doubles. |
default CodeBuilder |
daload() |
Генерирует инструкцию для загрузки значения из массива double. |
default CodeBuilder |
dastore() |
Генерирует инструкцию для сохранения значения в массиве double. |
default CodeBuilder |
dcmpg() |
|
default CodeBuilder |
dcmpl() |
|
default CodeBuilder |
dconst_0() |
Генерирует инструкцию, помещающую константу 0 типа double в стек операндов. |
default CodeBuilder |
dconst_1() |
Генерирует инструкцию, помещающую константу 1 типа double в стек операндов. |
default CodeBuilder |
ddiv() |
Генерирует инструкцию для деления значений doubles. |
default CodeBuilder |
dload |
Генерирует инструкцию для загрузки значения double из локальной переменной. |
default CodeBuilder |
dmul() |
Генерирует инструкцию для умножения значений doubles. |
default CodeBuilder |
dneg() |
Генерирует инструкцию для изменения знака значения double. |
default CodeBuilder |
drem() |
Генерирует инструкцию для вычисления остатка от деления значений double. |
default CodeBuilder |
dreturn() |
Генерирует инструкцию для возврата значения double из этого метода. |
default CodeBuilder |
dstore |
Генерирует инструкцию для сохранения значения double в локальной переменной. |
default CodeBuilder |
dsub() |
Генерирует инструкцию для вычитания значений doubles. |
default CodeBuilder |
dup() |
Генерирует инструкцию для дублирования верхнего значения стека операндов. |
default CodeBuilder |
dup_x1() |
Генерирует инструкцию для дублирования верхнего значения стека операндов и вставки его на две позиции ниже. |
default CodeBuilder |
dup_x2() |
Генерирует инструкцию для дублирования верхнего значения стека операндов и вставки его на две или три позиции ниже. |
default CodeBuilder |
dup2() |
Генерирует инструкцию для дублирования одного или двух верхних значений стека операндов. |
default CodeBuilder |
dup2_x1() |
Генерирует инструкцию для дублирования одного или двух верхних значений стека операндов и вставки копии на две или три позиции ниже. |
default CodeBuilder |
dup2_x2() |
Генерирует инструкцию для дублирования одного или двух верхних значений стека операндов и вставки копии на две, три или четыре позиции ниже. |
Label |
endLabel() |
Возвращает метку, связанную с концом текущего блока. |
default CodeBuilder |
exceptionCatch |
Объявляет запись таблицы исключений. |
default CodeBuilder |
exceptionCatch |
Объявляет запись таблицы исключений. |
default CodeBuilder |
exceptionCatch |
Объявляет запись таблицы исключений. |
default CodeBuilder |
exceptionCatchAll |
Объявляет запись таблицы исключений, перехватывающую все исключения и ошибки. |
default CodeBuilder |
f2d() |
|
default CodeBuilder |
f2i() |
|
default CodeBuilder |
f2l() |
|
default CodeBuilder |
fadd() |
Генерирует инструкцию для сложения двух значений floats. |
default CodeBuilder |
faload() |
Генерирует инструкцию для загрузки значения из массива float. |
default CodeBuilder |
fastore() |
Генерирует инструкцию для сохранения значения в массиве float. |
default CodeBuilder |
fcmpg() |
|
default CodeBuilder |
fcmpl() |
|
default CodeBuilder |
fconst_0() |
Генерирует инструкцию, помещающую константу 0 типа float в стек операндов. |
default CodeBuilder |
fconst_1() |
Генерирует инструкцию, помещающую константу 1 типа float в стек операндов. |
default CodeBuilder |
fconst_2() |
Генерирует инструкцию, помещающую константу 2 типа float в стек операндов. |
default CodeBuilder |
fdiv() |
Генерирует инструкцию для деления значений floats. |
default CodeBuilder |
fieldAccess |
Генерирует инструкцию для доступа к полю. |
default CodeBuilder |
fieldAccess |
Генерирует инструкцию для доступа к полю. |
default CodeBuilder |
fload |
Генерирует инструкцию для загрузки значения float из локальной переменной. |
default CodeBuilder |
fmul() |
Генерирует инструкцию для умножения значений floats. |
default CodeBuilder |
fneg() |
Генерирует инструкцию для изменения знака значения float. |
default CodeBuilder |
frem() |
Генерирует инструкцию для вычисления остатка от деления значений floats. |
default CodeBuilder |
freturn() |
Генерирует инструкцию для возврата значения float из этого метода. |
default CodeBuilder |
fstore |
Генерирует инструкцию для сохранения значения float в локальной переменной. |
default CodeBuilder |
fsub() |
Генерирует инструкцию для вычитания значений floats. |
default CodeBuilder |
getfield |
Генерирует инструкцию для получения поля объекта. |
default CodeBuilder |
getfield |
Генерирует инструкцию для получения поля объекта. |
default CodeBuilder |
getstatic |
Генерирует инструкцию для получения статического поля класса или интерфейса. |
default CodeBuilder |
getstatic |
Генерирует инструкцию для получения статического поля класса или интерфейса. |
default CodeBuilder |
goto_ |
Генерирует инструкцию для безусловного перехода. |
default CodeBuilder |
goto_w |
Генерирует инструкцию для безусловного перехода с широким индексом. |
default CodeBuilder |
i2b() |
|
default CodeBuilder |
i2c() |
|
default CodeBuilder |
i2d() |
|
default CodeBuilder |
i2f() |
|
default CodeBuilder |
i2l() |
|
default CodeBuilder |
i2s() |
|
default CodeBuilder |
iadd() |
Генерирует инструкцию для сложения двух значений ints. |
default CodeBuilder |
iaload() |
Генерирует инструкцию для загрузки значения из массива int. |
default CodeBuilder |
iand() |
|
default CodeBuilder |
iastore() |
Генерирует инструкцию для сохранения значения в массиве int. |
default CodeBuilder |
iconst_0() |
Генерирует инструкцию, помещающую константу 0 типа int в стек операндов. |
default CodeBuilder |
iconst_1() |
Генерирует инструкцию, помещающую константу 1 типа int в стек операндов. |
default CodeBuilder |
iconst_2() |
Генерирует инструкцию, помещающую константу 2 типа int в стек операндов. |
default CodeBuilder |
iconst_3() |
Генерирует инструкцию, помещающую константу 3 типа int в стек операндов. |
default CodeBuilder |
iconst_4() |
Генерирует инструкцию, помещающую константу 4 типа int в стек операндов. |
default CodeBuilder |
iconst_5() |
Генерирует инструкцию, помещающую константу 5 типа int в стек операндов. |
default CodeBuilder |
iconst_m1() |
Генерирует инструкцию, помещающую константу -1 типа int в стек операндов. |
default CodeBuilder |
idiv() |
Генерирует инструкцию для деления значений ints. |
default CodeBuilder |
if_acmpeq |
Генерирует инструкцию для перехода, если сравнение reference operand1 == operand2 истинно. |
default CodeBuilder |
if_acmpne |
Генерирует инструкцию для перехода, если сравнение reference operand1 != operand2 истинно. |
default CodeBuilder |
if_icmpeq |
Генерирует инструкцию для перехода, если сравнение int operand1 == operand2 истинно. |
default CodeBuilder |
if_icmpge |
Генерирует инструкцию для перехода, если сравнение int operand1 >= operand2 истинно. |
default CodeBuilder |
if_icmpgt |
Генерирует инструкцию для перехода, если сравнение int operand1 > operand2 истинно. |
default CodeBuilder |
if_icmple |
Генерирует инструкцию для перехода, если сравнение int operand1 <= operand2 истинно. |
default CodeBuilder |
if_icmplt |
Генерирует инструкцию для перехода, если сравнение int operand1 < operand2 истинно. |
default CodeBuilder |
if_icmpne |
Генерирует инструкцию для перехода, если сравнение int operand1 != operand2 истинно. |
default CodeBuilder |
ifeq |
Генерирует инструкцию для перехода, если сравнение int с нулём == 0 истинно. |
default CodeBuilder |
ifge |
Генерирует инструкцию для перехода, если сравнение int с нулём >= 0 истинно. |
default CodeBuilder |
ifgt |
Генерирует инструкцию для перехода, если сравнение int с нулём > 0 истинно. |
default CodeBuilder |
ifle |
Генерирует инструкцию для перехода, если сравнение int с нулём <= 0 истинно. |
default CodeBuilder |
iflt |
Генерирует инструкцию для перехода, если сравнение int с нулём < 0 истинно. |
default CodeBuilder |
ifne |
Генерирует инструкцию для перехода, если сравнение int с нулём != 0 истинно. |
default CodeBuilder |
ifnonnull |
Генерирует инструкцию для перехода, если reference не равно null. |
default CodeBuilder |
ifnull |
Генерирует инструкцию для перехода, если reference равно null. |
default CodeBuilder |
ifThen |
Добавляет блок «если — то», выполнение которого зависит от значения (значений) в вершине стека операндов согласно заданному коду операции. |
default CodeBuilder |
ifThen |
Добавляет блок «если — то», выполнение которого зависит от значения boolean в вершине стека операндов. |
default CodeBuilder |
ifThenElse |
Добавляет блок «если — то — иначе», выполнение которого зависит от значения (значений) в вершине стека операндов согласно заданному коду операции. |
default CodeBuilder |
ifThenElse |
Добавляет блок «если — то — иначе», выполнение которого зависит от значения boolean в вершине стека операндов. |
default CodeBuilder |
iinc |
Генерирует инструкцию для увеличения локальной переменной int на константу. |
default CodeBuilder |
iload |
Генерирует инструкцию для загрузки значения int из локальной переменной. |
default CodeBuilder |
imul() |
Генерирует инструкцию для умножения значений ints. |
default CodeBuilder |
ineg() |
Генерирует инструкцию для изменения знака значения int. |
default CodeBuilder |
instanceOf |
Генерирует инструкцию для определения принадлежности объекта заданному типу; результат типа boolean помещается в стек операндов. |
default CodeBuilder |
instanceOf |
Генерирует инструкцию для определения принадлежности объекта заданному типу; результат типа boolean помещается в стек операндов. |
default CodeBuilder |
invoke |
Генерирует инструкцию для вызова метода. |
default CodeBuilder |
invoke |
Генерирует инструкцию для вызова метода. |
default CodeBuilder |
invokedynamic |
Генерирует инструкцию для вызова динамически вычисляемой точки вызова. |
default CodeBuilder |
invokedynamic |
Генерирует инструкцию для вызова динамически вычисляемой точки вызова. |
default CodeBuilder |
invokeinterface |
Генерирует инструкцию для вызова метода интерфейса. |
default CodeBuilder |
invokeinterface |
Генерирует инструкцию для вызова метода интерфейса. |
default CodeBuilder |
invokespecial |
Генерирует инструкцию для вызова метода экземпляра интерфейса; прямого вызова методов текущего класса и его суперклассов. |
default CodeBuilder |
invokespecial |
Генерирует инструкцию для вызова метода экземпляра класса; прямого вызова методов инициализации экземпляра, а также методов текущего класса и его суперклассов. |
default CodeBuilder |
invokespecial |
Генерирует инструкцию для вызова метода экземпляра класса; прямого вызова методов инициализации экземпляра, а также методов текущего класса и его суперклассов. |
default CodeBuilder |
invokespecial |
Генерирует инструкцию для вызова метода экземпляра; прямого вызова методов инициализации экземпляра, а также методов текущего класса и его суперклассов. |
default CodeBuilder |
invokestatic |
Генерирует инструкцию для вызова статического метода интерфейса. |
default CodeBuilder |
invokestatic |
Создает инструкцию для вызова метода класса (статического метода класса). |
default CodeBuilder |
invokestatic |
Создает инструкцию для вызова метода класса (статического метода класса). |
default CodeBuilder |
invokestatic |
Создает инструкцию для вызова метода класса (статического метода). |
default CodeBuilder |
invokevirtual |
Создает инструкцию для вызова метода экземпляра; диспетчеризация выполняется на основе класса. |
default CodeBuilder |
invokevirtual |
Создает инструкцию для вызова метода экземпляра; диспетчеризация выполняется на основе класса. |
default CodeBuilder |
ior() |
|
default CodeBuilder |
irem() |
Создает инструкцию для вычисления остатка от деления ints. |
default CodeBuilder |
ireturn() |
Создает инструкцию для возврата значения int из этого метода. |
default CodeBuilder |
ishl() |
Создает инструкцию для сдвига значения int влево. |
default CodeBuilder |
ishr() |
Создает инструкцию для сдвига значения int вправо. |
default CodeBuilder |
istore |
Создает инструкцию для сохранения значения int в локальную переменную. |
default CodeBuilder |
isub() |
Создает инструкцию для вычитания значений ints. |
default CodeBuilder |
iushr() |
Создает инструкцию для логического сдвига значения int вправо. |
default CodeBuilder |
ixor() |
Создает инструкцию для вычисления побитового исключающего ИЛИ значений ints. |
default CodeBuilder |
l2d() |
|
default CodeBuilder |
l2f() |
|
default CodeBuilder |
l2i() |
|
default CodeBuilder |
labelBinding |
Связывает метку с текущей позицией. |
default CodeBuilder |
ladd() |
Создает инструкцию для сложения двух значений longs. |
default CodeBuilder |
laload() |
Создает инструкцию для загрузки значения из массива long. |
default CodeBuilder |
land() |
Создает инструкцию для вычисления побитового И значений longs. |
default CodeBuilder |
lastore() |
Создает инструкцию для сохранения значения в массив long. |
default CodeBuilder |
lcmp() |
Создает инструкцию для сравнения значений longs. |
default CodeBuilder |
lconst_0() |
Создает инструкцию для помещения константы 0 типа long в стек операндов. |
default CodeBuilder |
lconst_1() |
Создает инструкцию для помещения константы 1 типа long в стек операндов. |
default CodeBuilder |
ldc |
Создает инструкцию для помещения элемента из пула констант времени выполнения в стек операндов. |
default CodeBuilder |
ldc |
Создает инструкцию для помещения элемента из пула констант времени выполнения в стек операндов. |
default CodeBuilder |
ldiv() |
Создает инструкцию для деления значений longs. |
default CodeBuilder |
lineNumber |
Объявляет номер строки исходного кода, начинающейся в текущей позиции. |
default CodeBuilder |
lload |
Создает инструкцию для загрузки значения long из локальной переменной. |
default CodeBuilder |
lmul() |
Создает инструкцию для умножения значений longs. |
default CodeBuilder |
lneg() |
Создает инструкцию для изменения знака значения long. |
default CodeBuilder |
loadConstant |
Создает инструкцию для помещения константного значения типа double в стек операндов. |
default CodeBuilder |
loadConstant |
Создает инструкцию для помещения константного значения типа float в стек операндов. |
default CodeBuilder |
loadConstant |
Создает инструкцию для помещения константного значения типа int в стек операндов. |
default CodeBuilder |
loadConstant |
Создает инструкцию для помещения константного значения типа long в стек операндов. |
default CodeBuilder |
loadConstant |
Создает инструкцию для помещения константы в стек операндов. |
default CodeBuilder |
loadLocal |
Создает инструкцию для загрузки значения из локальной переменной. |
default CodeBuilder |
localVariable |
Объявляет запись локальной переменной. |
default CodeBuilder |
localVariable |
Объявляет запись локальной переменной. |
default CodeBuilder |
localVariableType |
Объявляет запись типа локальной переменной. |
default CodeBuilder |
localVariableType |
Объявляет запись типа локальной переменной. |
default CodeBuilder |
lookupswitch |
Создает инструкцию для обращения к таблице переходов по совпадению ключа и выполнения перехода. |
default CodeBuilder |
lor() |
Создает инструкцию для вычисления побитового ИЛИ значений longs. |
default CodeBuilder |
lrem() |
Создает инструкцию для вычисления остатка от деления longs. |
default CodeBuilder |
lreturn() |
Создает инструкцию для возврата значения long из этого метода. |
default CodeBuilder |
lshl() |
Создает инструкцию для сдвига значения long влево. |
default CodeBuilder |
lshr() |
Создает инструкцию для сдвига значения long вправо. |
default CodeBuilder |
lstore |
Создает инструкцию для сохранения значения long в локальную переменную. |
default CodeBuilder |
lsub() |
Создает инструкцию для вычитания значений longs. |
default CodeBuilder |
lushr() |
Создает инструкцию для логического сдвига значения long вправо. |
default CodeBuilder |
lxor() |
Создает инструкцию для вычисления побитового исключающего ИЛИ значений longs. |
default CodeBuilder |
monitorenter() |
Создает инструкцию для входа в монитор объекта. |
default CodeBuilder |
monitorexit() |
Создает инструкцию для выхода из монитора объекта. |
default CodeBuilder |
multianewarray |
Создает инструкцию для создания нового многомерного массива. |
default CodeBuilder |
multianewarray |
Создает инструкцию для создания нового многомерного массива. |
default CodeBuilder |
new_ |
Создает инструкцию для создания нового объекта. |
default CodeBuilder |
new_ |
Создает инструкцию для создания нового объекта. |
default CodeBuilder |
newarray |
Создает инструкцию для создания нового массива примитивного типа. |
default Label |
newBoundLabel() |
Создает новую метку, связанную с текущей позицией. |
Label |
newLabel() |
Возвращает новую несвязанную метку. |
default CodeBuilder |
nop() |
Создает инструкцию, не выполняющую никаких действий. |
int |
parameterSlot |
Возвращает слот локальной переменной, связанный с указанным параметром. |
default CodeBuilder |
pop() |
Создает инструкцию для извлечения верхнего значения из стека операндов. |
default CodeBuilder |
pop2() |
Создает инструкцию для извлечения одного или двух верхних значений из стека операндов. |
default CodeBuilder |
putfield |
Создает инструкцию для установки поля объекта. |
default CodeBuilder |
putfield |
Создает инструкцию для установки поля объекта. |
default CodeBuilder |
putstatic |
Создает инструкцию для установки статического поля класса. |
default CodeBuilder |
putstatic |
Создает инструкцию для установки статического поля класса. |
int |
receiverSlot() |
Возвращает слот локальной переменной, связанный с получателем. |
default CodeBuilder |
return_() |
Создает инструкцию для возврата значения void из этого метода. |
default CodeBuilder |
return_ |
Создает инструкцию возврата. |
default CodeBuilder |
saload() |
Создает инструкцию для загрузки значения из массива short. |
default CodeBuilder |
sastore() |
Создает инструкцию для сохранения значения в массив short. |
default CodeBuilder |
sipush |
|
Label |
startLabel() |
Возвращает метку, связанную с началом текущего блока. |
default CodeBuilder |
storeLocal |
Создает инструкцию для сохранения значения в локальную переменную. |
default CodeBuilder |
swap() |
Создает инструкцию для перестановки двух верхних значений в стеке операндов. |
default CodeBuilder |
tableswitch |
Создает инструкцию для обращения к таблице переходов по индексу и выполнения перехода. |
default CodeBuilder |
tableswitch |
Создает инструкцию для обращения к таблице переходов по индексу и выполнения перехода. |
default CodeBuilder |
transforming |
Применяет преобразование кода, созданного обработчиком, и направляет результаты этому построителю. |
default CodeBuilder |
trying |
Добавляет блок try-catch, состоящий из одного блока try и нуля или более блоков catch. |
Методы, объявленные в интерфейсе ClassFileBuilder
accept, constantPool, transform, with
Подробное описание методов
newLabel
Label newLabel()
labelBinding(Label).- Возвращает:
- новую несвязанную метку
startLabel
Label startLabel()
block(Consumer) или ifThenElse(Consumer, Consumer), текущим блоком будет всё тело метода.- Возвращает:
- метку, связанную с началом текущего блока
endLabel
Label endLabel()
block(Consumer) или ifThenElse(Consumer, Consumer), текущим блоком будет всё тело метода.- Возвращает:
- метку, связанную с концом текущего блока
receiverSlot
int receiverSlot()
- Возвращает:
- слот локальной переменной, связанный с получателем
- Выбрасывает:
-
IllegalStateException— если это статический метод
parameterSlot
int parameterSlot(int paramNo)
long и double занимают два слота.- Параметры:
-
paramNo— индекс параметра - Возвращает:
- слот локальной переменной, связанный с указанным параметром
- Выбрасывает:
-
IndexOutOfBoundsException— если индекс параметра выходит за допустимые границы
allocateLocal
int allocateLocal(TypeKind typeKind)
maxLocals исходного метода. Для метода, создаваемого напрямую, новые локальные переменные начинают размещаться после последнего слота параметра. Если текущий построитель кода является CodeBuilder.BlockCodeBuilder, в конце блока локальные переменные сбрасываются до значений, которые они имели в начале блока.
- Параметры:
-
typeKind— тип локальной переменной - Возвращает:
- слот локальной переменной для новой локальной переменной
transforming
default CodeBuilder transforming(CodeTransform transform, Consumer<CodeBuilder> handler)
- Примечание API:
- Это похоже на
ClassFileBuilder.transform(CompoundElement, ClassFileTransform), однако здесь не требуется предварительно представлять элементы кода в видеCodeModel. - Параметры:
-
transform— преобразование, которое нужно применить к коду, создаваемому обработчиком -
handler— обработчик, получающийCodeBuilderдля создания кода - Возвращает:
- этот построитель
block
default CodeBuilder block(Consumer<CodeBuilder.BlockCodeBuilder> handler)
В этом блоке startLabel() и endLabel() соответствуют началу и концу блока, а CodeBuilder.BlockCodeBuilder.breakLabel() также соответствует концу блока, то есть позиции курсора непосредственно после этого вызова в данном построителе.
- Параметры:
-
handler— обработчик, получающийCodeBuilder.BlockCodeBuilderдля создания тела лексического блока - Возвращает:
- этот построитель
ifThen
default CodeBuilder ifThen(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler)
boolean на вершине стека операндов. Управление переходит в блок «then», если значение представляет собой true. Для блока «then» CodeBuilder.BlockCodeBuilder.breakLabel() соответствует позиции курсора непосредственно после этого вызова в данном построителе.
- Параметры:
-
thenHandler— обработчик, получающий CodeBuilder.BlockCodeBuilder для создания телаif - Возвращает:
- этот построитель
- См. также:
ifThen
default CodeBuilder ifThen(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler)
opcode выполнено. Для блока «then» CodeBuilder.BlockCodeBuilder.breakLabel() соответствует позиции курсора непосредственно после этого вызова в данном построителе.
- Параметры:
-
opcode— код операции для инструкции перехода, принимающей один или два операнда из стека -
thenHandler— обработчик, получающийCodeBuilder.BlockCodeBuilderдля создания телаif - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— если код операции не соответствует инструкции перехода, принимающей один или два операнда
ifThenElse
default CodeBuilder ifThenElse(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler)
boolean на вершине стека операндов. Управление переходит в блок «then», если значение представляет собой true, и в противном случае переходит в блок «else». Для каждого блока CodeBuilder.BlockCodeBuilder.breakLabel() соответствует позиции курсора непосредственно после этого вызова в данном построителе.
- Параметры:
-
thenHandler— обработчик, получающийCodeBuilder.BlockCodeBuilderдля создания телаif -
elseHandler— обработчик, получающийCodeBuilder.BlockCodeBuilderдля создания телаelse - Возвращает:
- этот построитель
- См. также:
ifThenElse
default CodeBuilder ifThenElse(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler)
opcode выполнено, и в противном случае переходит в блок «else». Для каждого блока CodeBuilder.BlockCodeBuilder.breakLabel() соответствует позиции курсора непосредственно после этого вызова в данном построителе.
- Параметры:
-
opcode— код операции для инструкции перехода, принимающей один или два операнда из стека -
thenHandler— обработчик, получающий CodeBuilder.BlockCodeBuilder для создания телаif -
elseHandler— обработчик, получающий CodeBuilder.BlockCodeBuilder для создания телаelse - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— если код операции не соответствует инструкции перехода, принимающей один или два операнда
trying
default CodeBuilder trying(Consumer<CodeBuilder.BlockCodeBuilder> tryHandler, Consumer<CodeBuilder.CatchBuilder> catchesHandler)
Для блока try и всех блоков catch в catchesHandler CodeBuilder.BlockCodeBuilder.breakLabel() соответствует позиции курсора непосредственно после этого вызова в данном построителе.
- Параметры:
-
tryHandler— обработчик, получающийCodeBuilder.BlockCodeBuilderдля создания тела блока try. -
catchesHandler— обработчик, получающийCodeBuilder.CatchBuilderдля создания тел блоков catch - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— если блок try пуст - См. также:
loadLocal
default CodeBuilder loadLocal(TypeKind tk, int slot)
- Параметры:
-
tk— тип загружаемого значения -
slot— слот локальной переменной - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— еслиtkимеет типvoidилиslotвыходит за допустимые границы - См. также:
storeLocal
default CodeBuilder storeLocal(TypeKind tk, int slot)
- Параметры:
-
tk— тип сохраняемого значения -
slot— слот локальной переменной - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— еслиtkимеет типvoidилиslotвыходит за допустимые границы - См. также:
branch
default CodeBuilder branch(Opcode op, Label target)
Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, размер кода операции равен 3, а target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же результата может быть сгенерировано несколько инструкций.
- Параметры:
-
op— код операции перехода -
target— цель перехода - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— еслиopне относится кOpcode.Kind.BRANCH - См. также:
return_
default CodeBuilder return_(TypeKind tk)
- Параметры:
-
tk— тип возвращаемого значения - Возвращает:
- этот построитель
- См. также:
fieldAccess
default CodeBuilder fieldAccess(Opcode opcode, FieldRefEntry ref)
- Параметры:
-
opcode— код операции доступа к полю -
ref— ссылка на поле - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— еслиopcodeне относится кOpcode.Kind.FIELD_ACCESS - См. также:
fieldAccess
default CodeBuilder fieldAccess(Opcode opcode, ClassDesc owner, String name, ClassDesc type)
- Параметры:
-
opcode— код операции доступа к полю -
owner— класс -
name— имя поля -
type— тип поля - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— еслиopcodeне относится кOpcode.Kind.FIELD_ACCESSилиownerявляется примитивным - См. также:
invoke
default CodeBuilder invoke(Opcode opcode, MemberRefEntry ref)
- Параметры:
-
opcode— код операции вызова -
ref— ссылка на метод интерфейса или метод - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— еслиopcodeне относится кOpcode.Kind.INVOKE - См. также:
invoke
default CodeBuilder invoke(Opcode opcode, ClassDesc owner, String name, MethodTypeDesc desc, boolean isInterface)
- Параметры:
-
opcode— код операции вызова -
owner— класс -
name— имя метода -
desc— тип метода -
isInterface— является ли класс-владелец интерфейсом - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— еслиopcodeне относится кOpcode.Kind.INVOKEилиownerявляется примитивным - См. также:
arrayLoad
default CodeBuilder arrayLoad(TypeKind tk)
- Параметры:
-
tk— тип элемента массива - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— еслиtkимеет типvoid - См. также:
arrayStore
default CodeBuilder arrayStore(TypeKind tk)
- Параметры:
-
tk— тип элемента массива - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— еслиtkимеет типvoid - См. также:
conversion
default CodeBuilder conversion(TypeKind fromType, TypeKind toType)
fromType в toType.- Параметры:
-
fromType— исходный тип -
toType— целевой тип - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— при преобразовании типовvoidилиreference - См. также:
loadConstant
default CodeBuilder loadConstant(ConstantDesc value)
- Параметры:
-
value— значение константы; может бытьnull - Возвращает:
- этот построитель
- См. также:
loadConstant
default CodeBuilder loadConstant(int value)
int на стек операндов. Это эквивалентно вызову loadConstant(Integer.valueOf(value)).- Параметры:
-
value— значение типа int - Возвращает:
- этот построитель
- См. также:
loadConstant
default CodeBuilder loadConstant(long value)
long на стек операндов. Это эквивалентно вызову loadConstant(Long.valueOf(value)).- Параметры:
-
value— значение типа long - Возвращает:
- этот построитель
- См. также:
loadConstant
default CodeBuilder loadConstant(float value)
float на стек операндов. Это эквивалентно вызову loadConstant(Float.valueOf(value)). Все значения NaN типа float могут быть сведены или не сведены к одному «каноническому» значению NaN.
- Параметры:
-
value— значение типа float - Возвращает:
- этот построитель
- См. также:
loadConstant
default CodeBuilder loadConstant(double value)
double на стек операндов. Это эквивалентно вызову loadConstant(Double.valueOf(value)). Все значения NaN типа double могут быть сведены или не сведены к одному «каноническому» значению NaN.
- Параметры:
-
value— значение типа double - Возвращает:
- этот построитель
- См. также:
nop
default CodeBuilder nop()
- Возвращает:
- этот построитель
- См. также:
newBoundLabel
default Label newBoundLabel()
- Возвращает:
- этот построитель
- См. также:
labelBinding
default CodeBuilder labelBinding(Label label)
- Примечание API:
- Связываемая метка не обязательно должна быть создана этим построителем; она может принадлежать другой разобранной модели
CodeModel. - Параметры:
-
label— метка - Возвращает:
- этот построитель
- См. также:
lineNumber
default CodeBuilder lineNumber(int line)
Этот вызов может быть проигнорирован в соответствии с настройкой ClassFile.LineNumbersOption.
- Параметры:
-
line— номер строки - Возвращает:
- этот построитель
- См. также:
exceptionCatch
default CodeBuilder exceptionCatch(Label start, Label end, Label handler, ClassEntry catchType)
Этот вызов может быть проигнорирован, если какая-либо метка аргумента не связана и задан параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.
- Параметры:
-
start— начало блока try -
end— конец блока try -
handler— начало обработчика исключений -
catchType— тип перехватываемого исключения; может бытьnull, чтобы перехватывать все исключения и ошибки - Возвращает:
- этот построитель
- См. также:
exceptionCatch
default CodeBuilder exceptionCatch(Label start, Label end, Label handler, Optional<ClassEntry> catchType)
Этот вызов может быть проигнорирован, если какая-либо метка аргумента не связана и задан параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.
- Параметры:
-
start— начало блока try -
end— конец блока try -
handler— начало обработчика исключений -
catchType— необязательный тип перехватываемого исключения; пустое значение означает перехват всех исключений и ошибок - Возвращает:
- этот построитель
- См. также:
exceptionCatch
default CodeBuilder exceptionCatch(Label start, Label end, Label handler, ClassDesc catchType)
Этот вызов может быть проигнорирован, если какая-либо из меток-аргументов не привязана и задан параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.
- Параметры:
-
start- начало блока try -
end- конец блока try -
handler- начало обработчика исключений -
catchType- тип перехватываемого исключения - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException- еслиcatchTypeявляется примитивным типом - См. также:
exceptionCatchAll
default CodeBuilder exceptionCatchAll(Label start, Label end, Label handler)
Этот вызов может быть проигнорирован, если какая-либо из меток-аргументов не привязана и задан параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.
- Параметры:
-
start- начало блока try -
end- конец блока try -
handler- начало обработчика исключений - Возвращает:
- этот построитель
- См. также:
characterRange
default CodeBuilder characterRange(Label startScope, Label endScope, int characterRangeStart, int characterRangeEnd, int flags)
Этот вызов может быть проигнорирован, если задан параметр ClassFile.DebugElementsOption.DROP_DEBUG или какая-либо из меток-аргументов не привязана и задан параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.
- Параметры:
-
startScope- начало области действия диапазона символов -
endScope- конец области действия диапазона символов -
characterRangeStart- закодированное начало области диапазона символов (включительно) -
characterRangeEnd- закодированный конец области диапазона символов (не включительно) -
flags- слово флагов, указывающее тип диапазона - Возвращает:
- этот построитель
- См. также:
localVariable
default CodeBuilder localVariable(int slot, Utf8Entry nameEntry, Utf8Entry descriptorEntry, Label startScope, Label endScope)
Этот вызов может быть проигнорирован, если задан параметр ClassFile.DebugElementsOption.DROP_DEBUG или какая-либо из меток-аргументов не привязана и задан параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.
- Параметры:
-
slot- слот локальной переменной -
nameEntry- имя переменной -
descriptorEntry- дескриптор переменной -
startScope- начало области действия переменной -
endScope- конец области действия переменной - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException- еслиslotвыходит за допустимый диапазон - См. также:
localVariable
default CodeBuilder localVariable(int slot, String name, ClassDesc descriptor, Label startScope, Label endScope)
Этот вызов может быть проигнорирован, если задан параметр ClassFile.DebugElementsOption.DROP_DEBUG или какая-либо из меток-аргументов не привязана и задан параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.
- Параметры:
-
slot- слот локальной переменной -
name- имя переменной -
descriptor- дескриптор переменной -
startScope- начало области действия переменной -
endScope- конец области действия переменной - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException- еслиslotвыходит за допустимый диапазон - См. также:
localVariableType
default CodeBuilder localVariableType(int slot, Utf8Entry nameEntry, Utf8Entry signatureEntry, Label startScope, Label endScope)
Этот вызов может быть проигнорирован, если задан параметр ClassFile.DebugElementsOption.DROP_DEBUG или какая-либо из меток-аргументов не привязана и задан параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.
- Примечание API:
- При объявлении записи типа локальной переменной также следует объявить запись локальной переменной с дескриптором, полученным стиранием (JLS 4.6) сигнатуры.
- Параметры:
-
slot- слот локальной переменной -
nameEntry- имя переменной -
signatureEntry- сигнатура переменной -
startScope- начало области действия переменной -
endScope- конец области действия переменной - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException- еслиslotвыходит за допустимый диапазон - См. также:
localVariableType
default CodeBuilder localVariableType(int slot, String name, Signature signature, Label startScope, Label endScope)
Этот вызов может быть проигнорирован, если задан параметр ClassFile.DebugElementsOption.DROP_DEBUG или какая-либо из меток-аргументов не привязана и задан параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.
- Примечание API:
- При объявлении записи типа локальной переменной также следует объявить запись локальной переменной с дескриптором, полученным стиранием (JLS 4.6) сигнатуры.
- Параметры:
-
slot- слот локальной переменной -
name- имя переменной -
signature- сигнатура переменной -
startScope- начало области действия переменной -
endScope- конец области действия переменной - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException- еслиslotвыходит за допустимый диапазон - См. также:
aconst_null
default CodeBuilder aconst_null()
reference в стек операндов.- Возвращает:
- этот построитель
- См. также:
aaload
default CodeBuilder aaload()
reference.- Возвращает:
- этот построитель
- См. также:
aastore
default CodeBuilder aastore()
reference.- Возвращает:
- этот построитель
- См. также:
aload
default CodeBuilder aload(int slot)
reference из локальной переменной. Также могут быть созданы инструкции aload_<N> и wide aload.
- Параметры:
-
slot- слот локальной переменной - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException- еслиslotвыходит за допустимый диапазон - См. также:
anewarray
default CodeBuilder anewarray(ClassEntry classEntry)
reference.- Параметры:
-
classEntry- тип компонента - Возвращает:
- этот построитель
- См. также:
anewarray
default CodeBuilder anewarray(ClassDesc className)
reference.- Параметры:
-
className- тип компонента - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException- еслиclassNameпредставляет примитивный тип - См. также:
areturn
default CodeBuilder areturn()
reference из этого метода.- Возвращает:
- этот построитель
- См. также:
arraylength
default CodeBuilder arraylength()
- Возвращает:
- этот построитель
- См. также:
astore
default CodeBuilder astore(int slot)
reference в локальной переменной. Такая инструкция также может сохранять значение returnAddress. Также могут быть созданы инструкции astore_<N> и wide astore.
- Параметры:
-
slot- слот локальной переменной - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException- еслиslotвыходит за допустимый диапазон - См. также:
athrow
default CodeBuilder athrow()
- Возвращает:
- этот построитель
- См. также:
baload
bastore
bipush
default CodeBuilder bipush(int b)
- Параметры:
-
b- значение int в диапазоне byte - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException- еслиbвыходит за диапазон byte - См. также:
caload
default CodeBuilder caload()
char.- Возвращает:
- этот построитель
- См. также:
castore
default CodeBuilder castore()
char.- Возвращает:
- этот построитель
- См. также:
checkcast
default CodeBuilder checkcast(ClassEntry type)
ClassCastException.- Параметры:
-
type- тип объекта - Возвращает:
- этот построитель
- См. также:
checkcast
default CodeBuilder checkcast(ClassDesc type)
ClassCastException.- Параметры:
-
type- тип объекта - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException- еслиtypeпредставляет примитивный тип - См. также:
d2f
d2i
d2l
dadd
default CodeBuilder dadd()
doubles.- Возвращает:
- этот построитель
- См. также:
daload
default CodeBuilder daload()
double.- Возвращает:
- этот построитель
- См. также:
dastore
default CodeBuilder dastore()
double.- Возвращает:
- этот построитель
- См. также:
dcmpg
dcmpl
dconst_0
default CodeBuilder dconst_0()
double 0 в стек операндов.- Возвращает:
- этот построитель
- См. также:
dconst_1
default CodeBuilder dconst_1()
double 1 в стек операндов.- Возвращает:
- этот построитель
- См. также:
ddiv
default CodeBuilder ddiv()
doubles.- Возвращает:
- этот построитель
- См. также:
dload
default CodeBuilder dload(int slot)
double из локальной переменной. Также могут быть созданы инструкции dload_<N> и wide dload.
- Параметры:
-
slot- слот локальной переменной - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException- еслиslotвыходит за допустимый диапазон - См. также:
dmul
default CodeBuilder dmul()
doubles.- Возвращает:
- этот построитель
- См. также:
dneg
default CodeBuilder dneg()
double.- Возвращает:
- этот построитель
- См. также:
drem
default CodeBuilder drem()
double.- Возвращает:
- этот построитель
- См. также:
dreturn
default CodeBuilder dreturn()
double из этого метода.- Возвращает:
- этот построитель
- См. также:
dstore
default CodeBuilder dstore(int slot)
double в локальную переменную. Также могут быть сгенерированы инструкции dstore_<N> и wide dstore.
- Параметры:
-
slot— слот локальной переменной - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиslotвыходит за допустимый диапазон - См. также:
dsub
default CodeBuilder dsub()
doubles.- Возвращает:
- этот построитель
- См. также:
dup
default CodeBuilder dup()
- Возвращает:
- этот построитель
- См. также:
dup2
default CodeBuilder dup2()
- Возвращает:
- этот построитель
- См. также:
dup2_x1
default CodeBuilder dup2_x1()
- Возвращает:
- этот построитель
- См. также:
dup2_x2
default CodeBuilder dup2_x2()
- Возвращает:
- этот построитель
- См. также:
dup_x1
default CodeBuilder dup_x1()
- Возвращает:
- этот построитель
- См. также:
dup_x2
default CodeBuilder dup_x2()
- Возвращает:
- этот построитель
- См. также:
f2d
f2i
f2l
fadd
default CodeBuilder fadd()
floats.- Возвращает:
- этот построитель
- См. также:
faload
default CodeBuilder faload()
float.- Возвращает:
- этот построитель
- См. также:
fastore
default CodeBuilder fastore()
float.- Возвращает:
- этот построитель
- См. также:
fcmpg
fcmpl
fconst_0
default CodeBuilder fconst_0()
float в стек операндов.- Возвращает:
- этот построитель
- См. также:
fconst_1
default CodeBuilder fconst_1()
float в стек операндов.- Возвращает:
- этот построитель
- См. также:
fconst_2
default CodeBuilder fconst_2()
float в стек операндов.- Возвращает:
- этот построитель
- См. также:
fdiv
default CodeBuilder fdiv()
floats.- Возвращает:
- этот построитель
- См. также:
fload
default CodeBuilder fload(int slot)
float из локальной переменной. Также могут быть сгенерированы инструкции fload_<N> и wide fload.
- Параметры:
-
slot— слот локальной переменной - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиslotвыходит за допустимый диапазон - См. также:
fmul
default CodeBuilder fmul()
floats.- Возвращает:
- этот построитель
- См. также:
fneg
default CodeBuilder fneg()
float.- Возвращает:
- этот построитель
- См. также:
frem
default CodeBuilder frem()
floats.- Возвращает:
- этот построитель
- См. также:
freturn
default CodeBuilder freturn()
float из этого метода.- Возвращает:
- этот построитель
- См. также:
fstore
default CodeBuilder fstore(int slot)
float в локальную переменную. Также могут быть сгенерированы инструкции fstore_<N> и wide fstore.
- Параметры:
-
slot— слот локальной переменной - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиslotвыходит за допустимый диапазон - См. также:
fsub
default CodeBuilder fsub()
floats.- Возвращает:
- этот построитель
- См. также:
getfield
default CodeBuilder getfield(FieldRefEntry ref)
- Параметры:
-
ref— ссылка на поле - Возвращает:
- этот построитель
- См. также:
getfield
default CodeBuilder getfield(ClassDesc owner, String name, ClassDesc type)
- Параметры:
-
owner— класс-владелец -
name— имя поля -
type— тип поля - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
getstatic
default CodeBuilder getstatic(FieldRefEntry ref)
- Параметры:
-
ref— ссылка на поле - Возвращает:
- этот построитель
- См. также:
getstatic
default CodeBuilder getstatic(ClassDesc owner, String name, ClassDesc type)
- Параметры:
-
owner— класс-владелец -
name— имя поля -
type— тип поля - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
goto_
default CodeBuilder goto_(Label target)
Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, также могут быть сгенерированы инструкции goto_w.
- Примечание API:
- Имя инструкции —
goto, совпадающее с зарезервированным ключевым словом языка программирования Java; поэтому к имени этого метода добавлен суффикс_. - Параметры:
-
target— целевая метка перехода - Возвращает:
- этот построитель
- См. также:
goto_w
default CodeBuilder goto_w(Label target)
- Параметры:
-
target— целевая метка перехода - Возвращает:
- этот построитель
- См. также:
i2b
i2c
i2d
i2f
i2l
i2s
iadd
default CodeBuilder iadd()
ints.- Возвращает:
- этот построитель
- См. также:
iaload
default CodeBuilder iaload()
int.- Возвращает:
- этот построитель
- См. также:
iand
iastore
default CodeBuilder iastore()
int.- Возвращает:
- этот построитель
- См. также:
iconst_0
default CodeBuilder iconst_0()
int со значением 0 в стек операндов.- Возвращает:
- этот построитель
- См. также:
iconst_1
default CodeBuilder iconst_1()
int со значением 1 в стек операндов.- Возвращает:
- этот построитель
- См. также:
iconst_2
default CodeBuilder iconst_2()
int со значением 2 в стек операндов.- Возвращает:
- этот построитель
- См. также:
iconst_3
default CodeBuilder iconst_3()
int со значением 3 в стек операндов.- Возвращает:
- этот построитель
- См. также:
iconst_4
default CodeBuilder iconst_4()
int со значением 4 в стек операндов.- Возвращает:
- этот построитель
- См. также:
iconst_5
default CodeBuilder iconst_5()
int со значением 5 в стек операндов.- Возвращает:
- этот построитель
- См. также:
iconst_m1
default CodeBuilder iconst_m1()
int со значением -1 в стек операндов.- Возвращает:
- этот построитель
- См. также:
idiv
default CodeBuilder idiv()
ints.- Возвращает:
- этот построитель
- См. также:
if_acmpeq
default CodeBuilder if_acmpeq(Label target)
reference operand1 == operand2 успешно. Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта может быть создано несколько инструкций.
- Параметры:
-
target— цель перехода - Возвращает:
- этот построитель
- См. также:
if_acmpne
default CodeBuilder if_acmpne(Label target)
reference operand1 != operand2 успешно. Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта может быть создано несколько инструкций.
- Параметры:
-
target— цель перехода - Возвращает:
- этот построитель
- См. также:
if_icmpeq
default CodeBuilder if_icmpeq(Label target)
int operand1 == operand2 успешно. Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта может быть создано несколько инструкций.
- Параметры:
-
target— цель перехода - Возвращает:
- этот построитель
- См. также:
if_icmpge
default CodeBuilder if_icmpge(Label target)
int operand1 >= operand2 успешно. Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта может быть создано несколько инструкций.
- Параметры:
-
target— цель перехода - Возвращает:
- этот построитель
- См. также:
if_icmpgt
default CodeBuilder if_icmpgt(Label target)
int operand1 > operand2 успешно. Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта может быть создано несколько инструкций.
- Параметры:
-
target— цель перехода - Возвращает:
- этот построитель
- См. также:
if_icmple
default CodeBuilder if_icmple(Label target)
int operand1 <= operand2 успешно. Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта может быть создано несколько инструкций.
- Параметры:
-
target— цель перехода - Возвращает:
- этот построитель
- См. также:
if_icmplt
default CodeBuilder if_icmplt(Label target)
int operand1 < operand2 успешно. Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта может быть создано несколько инструкций.
- Параметры:
-
target— цель перехода - Возвращает:
- этот построитель
- См. также:
if_icmpne
default CodeBuilder if_icmpne(Label target)
int operand1 != operand2 успешно. Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта может быть создано несколько инструкций.
- Параметры:
-
target— цель перехода - Возвращает:
- этот построитель
- См. также:
ifnonnull
default CodeBuilder ifnonnull(Label target)
reference не является null. Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта может быть создано несколько инструкций.
- Параметры:
-
target— цель перехода - Возвращает:
- этот построитель
- См. также:
ifnull
default CodeBuilder ifnull(Label target)
reference является null. Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта может быть создано несколько инструкций.
- Параметры:
-
target— цель перехода - Возвращает:
- этот построитель
- См. также:
ifeq
default CodeBuilder ifeq(Label target)
int с нулем == 0 успешно. Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта может быть создано несколько инструкций.
- Параметры:
-
target— цель перехода - Возвращает:
- этот построитель
- См. также:
ifge
default CodeBuilder ifge(Label target)
int с нулем >= 0 успешно. Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта может быть создано несколько инструкций.
- Параметры:
-
target— цель перехода - Возвращает:
- этот построитель
- См. также:
ifgt
default CodeBuilder ifgt(Label target)
int с нулем > 0 успешно. Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта может быть создано несколько инструкций.
- Параметры:
-
target— цель перехода - Возвращает:
- этот построитель
- См. также:
ifle
default CodeBuilder ifle(Label target)
int с нулем <= 0 успешно. Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта может быть создано несколько инструкций.
- Параметры:
-
target— цель перехода - Возвращает:
- этот построитель
- См. также:
iflt
default CodeBuilder iflt(Label target)
int с нулем < 0 успешно. Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта может быть создано несколько инструкций.
- Параметры:
-
target— цель перехода - Возвращает:
- этот построитель
- См. также:
ifne
default CodeBuilder ifne(Label target)
int с нулем != 0 успешно. Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта может быть создано несколько инструкций.
- Параметры:
-
target— цель перехода - Возвращает:
- этот построитель
- См. также:
iinc
default CodeBuilder iinc(int slot, int val)
int на константу. Также могут быть созданы инструкции wide iinc, если slot превышает 255 или val выходит за диапазон byte.
- Параметры:
-
slot— слот локальной переменной -
val— значение приращения - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиslotилиvalвыходит за допустимый диапазон - См. также:
iload
default CodeBuilder iload(int slot)
int из локальной переменной. Также могут быть созданы инструкции iload_<N> и wide iload.
- Параметры:
-
slot— слот локальной переменной - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиslotвыходит за допустимый диапазон - См. также:
imul
default CodeBuilder imul()
ints.- Возвращает:
- этот построитель
- См. также:
ineg
default CodeBuilder ineg()
int.- Возвращает:
- этот построитель
- См. также:
instanceOf
default CodeBuilder instanceOf(ClassEntry target)
boolean в стек операндов.- Примечание API:
- Инструкция называется
instanceof; поскольку это совпадает с зарезервированным ключевым словом языка программирования Java, имя метода записано в CamelCase. - Параметры:
-
target— целевой тип - Возвращает:
- этот построитель
- См. также:
instanceOf
default CodeBuilder instanceOf(ClassDesc target)
boolean в стек операндов.- Примечание API:
- Инструкция называется
instanceof; поскольку это совпадает с зарезервированным ключевым словом языка программирования Java, имя метода записано в CamelCase. - Параметры:
-
target— целевой тип - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиtargetобозначает примитивный тип - См. также:
invokedynamic
default CodeBuilder invokedynamic(InvokeDynamicEntry ref)
- Параметры:
-
ref— динамическая точка вызова - Возвращает:
- этот построитель
- См. также:
invokedynamic
default CodeBuilder invokedynamic(DynamicCallSiteDesc ref)
- Параметры:
-
ref— динамическая точка вызова - Возвращает:
- этот построитель
- См. также:
invokeinterface
default CodeBuilder invokeinterface(InterfaceMethodRefEntry ref)
- Параметры:
-
ref— ссылка на метод интерфейса - Возвращает:
- этот построитель
- См. также:
invokeinterface
default CodeBuilder invokeinterface(ClassDesc owner, String name, MethodTypeDesc type)
- Параметры:
-
owner— интерфейс-владелец -
name— имя метода -
type— тип метода - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
invokespecial
default CodeBuilder invokespecial(InterfaceMethodRefEntry ref)
- Параметры:
-
ref— ссылка на метод интерфейса - Возвращает:
- этот построитель
- См. также:
invokespecial
default CodeBuilder invokespecial(MethodRefEntry ref)
- Параметры:
-
ref— ссылка на метод - Возвращает:
- этот построитель
- См. также:
invokespecial
default CodeBuilder invokespecial(ClassDesc owner, String name, MethodTypeDesc type)
- Параметры:
-
owner— класс-владелец, не должен быть интерфейсом -
name— имя метода -
type— тип метода - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
invokespecial
default CodeBuilder invokespecial(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface)
- Параметры:
-
owner— класс или интерфейс-владелец -
name— имя метода -
type— тип метода -
isInterface— является ли владелец интерфейсом - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
invokestatic
default CodeBuilder invokestatic(InterfaceMethodRefEntry ref)
- Параметры:
-
ref— ссылка на метод интерфейса - Возвращает:
- этот построитель
- См. также:
invokestatic
default CodeBuilder invokestatic(MethodRefEntry ref)
- Параметры:
-
ref— ссылка на метод - Возвращает:
- этот построитель
- См. также:
invokestatic
default CodeBuilder invokestatic(ClassDesc owner, String name, MethodTypeDesc type)
- Параметры:
-
owner— класс-владелец, не должен быть интерфейсом -
name— имя метода -
type— тип метода - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
invokestatic
default CodeBuilder invokestatic(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface)
- Параметры:
-
owner— класс или интерфейс-владелец -
name— имя метода -
type— тип метода -
isInterface— является ли владелец интерфейсом - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
invokevirtual
default CodeBuilder invokevirtual(MethodRefEntry ref)
- Параметры:
-
ref— ссылка на метод - Возвращает:
- этот построитель
- См. также:
invokevirtual
default CodeBuilder invokevirtual(ClassDesc owner, String name, MethodTypeDesc type)
- Параметры:
-
owner— класс-владелец, не должен быть интерфейсом -
name— имя метода -
type— тип метода - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
ior
irem
default CodeBuilder irem()
ints.- Возвращает:
- этот построитель
- См. также:
ireturn
default CodeBuilder ireturn()
int из этого метода.- Возвращает:
- этот построитель
- См. также:
ishl
default CodeBuilder ishl()
int влево.- Возвращает:
- этот построитель
- См. также:
ishr
istore
default CodeBuilder istore(int slot)
int в локальную переменную. При этом также могут генерироваться инструкции istore_<N> и wide istore.
- Параметры:
-
slot— слот локальной переменной - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— еслиslotвыходит за допустимый диапазон - См. также:
isub
default CodeBuilder isub()
ints.- Возвращает:
- этот построитель
- См. также:
iushr
ixor
lookupswitch
default CodeBuilder lookupswitch(Label defaultTarget, List<SwitchCase> cases)
- Параметры:
-
defaultTarget— цель перехода по умолчанию -
cases— варианты переключения - Возвращает:
- этот построитель
- См. также:
l2d
l2f
l2i
ladd
default CodeBuilder ladd()
longs.- Возвращает:
- этот построитель
- См. также:
laload
default CodeBuilder laload()
long.- Возвращает:
- этот построитель
- См. также:
land
default CodeBuilder land()
longs.- Возвращает:
- этот построитель
- См. также:
lastore
default CodeBuilder lastore()
long.- Возвращает:
- этот построитель
- См. также:
lcmp
default CodeBuilder lcmp()
longs.- Возвращает:
- этот построитель
- См. также:
lconst_0
default CodeBuilder lconst_0()
long в стек операндов.- Возвращает:
- этот построитель
- См. также:
lconst_1
default CodeBuilder lconst_1()
long в стек операндов.- Возвращает:
- этот построитель
- См. также:
ldc
default CodeBuilder ldc(ConstantDesc value)
При этом также могут генерироваться инструкции ldc_w и ldc2_w.
- Примечание API:
-
loadConstantгенерирует более оптимальные инструкции и должен использоваться для обычных констант, если инструкцияldcне является строго необходимой. - Параметры:
-
value— значение константы - Возвращает:
- этот построитель
- См. также:
ldc
ldiv
default CodeBuilder ldiv()
longs.- Возвращает:
- этот построитель
- См. также:
lload
default CodeBuilder lload(int slot)
long из локальной переменной. При этом также могут генерироваться инструкции lload_<N> и wide lload.
- Параметры:
-
slot— слот локальной переменной - Возвращает:
- этот построитель
- Выбрасывает:
-
IllegalArgumentException— еслиslotвыходит за допустимый диапазон - См. также:
lmul
default CodeBuilder lmul()
longs.- Возвращает:
- этот построитель
- См. также:
lneg
default CodeBuilder lneg()
long.- Возвращает:
- этот построитель
- См. также:
lor
default CodeBuilder lor()
longs.- Возвращает:
- этот построитель
- См. также:
lrem
default CodeBuilder lrem()
longs.- Возвращает:
- этот построитель
- См. также:
lreturn
default CodeBuilder lreturn()
long из этого метода.- Возвращает:
- этот построитель
- См. также:
lshl
default CodeBuilder lshl()
long влево.- Возвращает:
- этот построитель
- См. также:
lshr
lstore
default CodeBuilder lstore(int slot)
long в локальной переменной. Также могут быть сгенерированы инструкции lstore_<N> и wide lstore.
- Параметры:
-
slot— слот локальной переменной - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиslotвыходит за допустимый диапазон - См. также:
lsub
default CodeBuilder lsub()
longs.- Возвращает:
- этот построитель
- См. также:
lushr
lxor
default CodeBuilder lxor()
longs.- Возвращает:
- этот построитель
- См. также:
monitorenter
default CodeBuilder monitorenter()
- Возвращает:
- этот построитель
- См. также:
monitorexit
default CodeBuilder monitorexit()
- Возвращает:
- этот построитель
- См. также:
multianewarray
default CodeBuilder multianewarray(ClassEntry array, int dims)
- Параметры:
-
array— тип массива -
dims— количество измерений - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиdimsвыходит за допустимый диапазон - См. также:
multianewarray
default CodeBuilder multianewarray(ClassDesc array, int dims)
- Параметры:
-
array— тип массива -
dims— количество измерений - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиarrayпредставляет примитивный тип или еслиdimsвыходит за допустимый диапазон - См. также:
new_
default CodeBuilder new_(ClassEntry clazz)
- Примечание к API:
- Название инструкции —
new, что совпадает с зарезервированным ключевым словом языка программирования Java, поэтому в названии этого метода добавлен суффикс_. - Параметры:
-
clazz— тип нового класса - Возвращает:
- этот построитель
- См. также:
new_
default CodeBuilder new_(ClassDesc clazz)
- Примечание к API:
- Название инструкции —
new, что совпадает с зарезервированным ключевым словом языка программирования Java, поэтому в названии этого метода добавлен суффикс_. - Параметры:
-
clazz— тип нового класса - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиclazzпредставляет примитивный тип - См. также:
newarray
default CodeBuilder newarray(TypeKind typeKind)
- Параметры:
-
typeKind— тип примитивного массива - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиtypeKindне является допустимым типом компонента примитивного массива - См. также:
pop
default CodeBuilder pop()
- Возвращает:
- этот построитель
- См. также:
pop2
default CodeBuilder pop2()
- Возвращает:
- этот построитель
- См. также:
putfield
default CodeBuilder putfield(FieldRefEntry ref)
- Параметры:
-
ref— ссылка на поле - Возвращает:
- этот построитель
- См. также:
putfield
default CodeBuilder putfield(ClassDesc owner, String name, ClassDesc type)
- Параметры:
-
owner— класс-владелец -
name— имя поля -
type— тип поля - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
putstatic
default CodeBuilder putstatic(FieldRefEntry ref)
- Параметры:
-
ref— ссылка на поле - Возвращает:
- этот построитель
- См. также:
putstatic
default CodeBuilder putstatic(ClassDesc owner, String name, ClassDesc type)
- Параметры:
-
owner— класс или интерфейс-владелец -
name— имя поля -
type— тип поля - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
return_
default CodeBuilder return_()
void из этого метода.- Примечание к API:
- Название инструкции —
return, что совпадает с зарезервированным ключевым словом языка программирования Java, поэтому в названии этого метода добавлен суффикс_. - Возвращает:
- этот построитель
- См. также:
saload
default CodeBuilder saload()
short.- Возвращает:
- этот построитель
- См. также:
sastore
default CodeBuilder sastore()
short.- Возвращает:
- этот построитель
- См. также:
sipush
default CodeBuilder sipush(int s)
- Параметры:
-
s— int в диапазоне short - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиsвыходит за диапазон short - См. также:
swap
default CodeBuilder swap()
- Возвращает:
- этот построитель
- См. также:
tableswitch
default CodeBuilder tableswitch(int low, int high, Label defaultTarget, List<SwitchCase> cases)
- Параметры:
-
low— минимальный ключ включительно -
high— максимальный ключ включительно -
defaultTarget— цель перехода по умолчанию -
cases— варианты switch - Возвращает:
- этот построитель
- См. также:
tableswitch
default CodeBuilder tableswitch(Label defaultTarget, List<SwitchCase> cases)
cases.- Параметры:
-
defaultTarget— цель перехода по умолчанию -
cases— варианты switch - Возвращает:
- этот построитель
- См. также:
© 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/CodeBuilder.html