Интерфейс BufWriter
public sealed interface BufWriter
class поддержка записи файлов для AttributeMapper. Поддерживает запись фрагментов файла class в динамический буфер, например, запись различных числовых типов (например, u2, u4) в конец буфера, а также создание записей пула констант. Все числовые значения в формате файла class являются big endian. Запись числовых значений большего размера в числовые значения меньшего размера всегда выполняется с усечением, сохраняя наименее значимые байты, а другие байты отбрасываются. В результате методы записи числовых значений могут записывать как знакомые, так и беззнаковые значения, и пользователи должны валидировать свои значения перед записью, если нежелательно автоматическое отбрасывание старших байтов.
- С момента:
- 24
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
canWriteDirect |
Возвращает, совместим ли предоставленный пул констант с пулом констант этого буфера. |
ConstantPoolBuilder |
constantPool() |
Возвращает создатель пула констант, связанный с этим буфером. |
void |
patchInt |
Обновляет ранее записанное целое значение. |
void |
reserveSpace |
Обеспечивает, что буфер имеет как минимум freeBytes байт свободного места в конце буфера. |
int |
size() |
Возвращает количество байтов, записанных в буфер. |
void |
writeBytes |
Записывает содержимое массива байтов в буфер. |
void |
writeBytes |
Записывает диапазон массива байтов в буфер. |
void |
writeDouble |
Записывает значение типа double, занимающее 8 байт, в буфер. |
void |
writeFloat |
Записывает значение типа float, занимающее 4 байта, в буфер. |
void |
writeIndex |
Записывает индекс указанной записи пула констант в виде u2. |
void |
writeIndexOrZero |
Записывает индекс указанной записи пула констант или значение 0, если указанная запись является null, в виде u2. |
void |
writeInt |
Записывает 4 байта или целое значение в буфер. |
void |
writeIntBytes |
Записывает многобайтовое значение в буфер. |
void |
writeLong |
Записывает 8 байт или значение long в буфер. |
void |
writeU1 |
Записывает байт в буфер. |
void |
writeU2 |
Записывает 2 байта или значение short в буфер. |
Подробное описание методов
constantPool
ConstantPoolBuilder constantPool()
- Возвращает:
- создатель константного пула, связанный с этим буфером
- См. также:
canWriteDirect
boolean canWriteDirect(ConstantPool other)
Это сокращение для constantPool().canWriteDirect(other).
- Параметры:
-
other- другой константный пул - Возвращает:
- совместим ли предоставленный константный пул с индексом константного пула этого буфера
- См. также:
reserveSpace
void reserveSpace(int freeBytes)
freeBytes байта свободного места в конце буфера. Результат записи такой же, без вызовов этого метода, но процесс записи может быть медленнее.
- Примечание API:
- Это подсказка, которая не изменяет видимое состояние буфера; она помогает уменьшить перераспределение базового хранилища, выделяя достаточное пространство сразу.
- Параметры:
-
freeBytes- количество байтов для резервирования
writeU1
void writeU1(int x)
x усекается до байта и записывается.- Параметры:
-
x- значение для усечения до байта
writeU2
void writeU2(int x)
x усекается до двух байтов и записывается.- Параметры:
-
x- значение для усечения до короткого
writeInt
void writeInt(int x)
- Параметры:
-
x- значение int
writeFloat
void writeFloat(float x)
При преобразованиях все значения NaN из float могут или не могут быть объединены в одно "каноническое" значение NaN.
- Параметры:
-
x- значение float
writeLong
void writeLong(long x)
- Параметры:
-
x- значение long
writeDouble
void writeDouble(double x)
При преобразованиях все значения NaN из double могут или не могут быть объединены в одно "каноническое" значение NaN.
- Параметры:
-
x- значение double
writeBytes
void writeBytes(byte[] arr)
- Параметры:
-
arr- массив байтов
writeBytes
void writeBytes(byte[] arr, int start, int length)
- Параметры:
-
arr- массив байтов -
start- начальный смещение диапазона в массиве байтов -
length- длина диапазона - Исключение:
-
IndexOutOfBoundsException- если диапазон выходит за пределы массива
patchInt
void patchInt(int offset, int size, int value)
value усекается до заданного size количества байтов и записывается по заданному
offset. Конец этого буфера остается без изменений.- Примечание API:
offsetможно получить, вызвавsize()перед записью предыдущего значения целого числа.- Параметры:
-
offset- смещение в этом буфере, где нужно обновить -
size- размер записываемого значения целого числа в байтах -
value- значение целого числа для усечения - Исключение:
-
IndexOutOfBoundsException- если обновленное целое число выходит за пределы - См. также:
writeIntBytes
void writeIntBytes(int intSize, long intValue)
intValue усекается до заданного intSize количества байтов и записывается.- Параметры:
-
intSize- размер записываемого значения целого числа в байтах -
intValue- значение для усечения
writeIndex
void writeIndex(PoolEntry entry)
u2. Если entry не принадлежит константному пулу этого буфера, он будет преобразован, и вместо этого будет записан индекс преобразованного элемента пула.- Параметры:
-
entry- элемент константного пула - Исключение:
-
IllegalArgumentException- если у элемента неверный индекс
writeIndexOrZero
void writeIndexOrZero(PoolEntry entry)
0, если указанный элемент null, как u2. Если entry не принадлежит константному пулу этого буфера, он будет преобразован, и вместо этого будет записан индекс преобразованного элемента пула.- Параметры:
-
entry- элемент константного пула, может бытьnull - Исключение:
-
IllegalArgumentException- если элемент неnullи имеет неверный индекс
размер
int size()
- Возвращает:
- количество байтов, записанных в буфер
- См. также:
© 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/BufWriter.html