インタフェースBufWriter
public sealed interface BufWriter
AttributeMapperの高度なclassファイル書込みサポート。 様々な数値型(e.g., u2, u4)をバッファの最後に書き込むことや、定数プール・エントリを作成するなど、classファイルの部分を拡張可能なバッファに書き込むことをサポートします。
classファイル形式のすべての数値は、「ビッグ・エンディアン」です。 大きい数値を小さい数値に書き出すと、常に切り捨てられ、最下位バイトが保持され、その他のバイトはサイレントに削除されます。 その結果、数値書込みメソッドは符号付き値と符号なし値の両方を書き込むことができ、最上位バイトのサイレント・ドロップが意図した動作ではない場合、ユーザーは書込み前に値を検証する必要があります。
- 導入されたバージョン:
- 24
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明booleancanWriteDirect(ConstantPool other) 指定された定数プールが、このバッファの定数プールと索引互換性があるかどうかを返します。このバッファに関連付けられた定数プール・ビルダーを返します。voidpatchInt(int offset, int size, int value) 以前に書き込まれた整数値にパッチを適用します。voidreserveSpace(int freeBytes) バッファの末尾にfreeBytesバイト以上の空き領域があることを確認します。intsize()バッファに書き込まれたバイト数を返します。voidwriteBytes(byte[] arr) バイト配列の内容をバッファに書き込みます。voidwriteBytes(byte[] arr, int start, int length) バイト配列の範囲をバッファに書き込みます。voidwriteDouble(double x) 8バイトのdouble値をバッファに書き込みます。voidwriteFloat(float x) 4バイトの浮動小数点値をバッファに書き込みます。voidwriteIndex(PoolEntry entry) 指定された定数プール・エントリのインデックスをu2として書き込みます。voidwriteIndexOrZero(PoolEntry entry) 指定された定数プール・エントリの索引、または指定されたエントリがnullの場合は値0をu2として書き込みます。voidwriteInt(int x) バッファに4バイト(int)を書き込みます。voidwriteIntBytes(int intSize, long intValue) マルチバイト値をバッファに書き込みます。voidwriteLong(long x) バッファに8バイト(long)を書き込みます。voidwriteU1(int x) バッファにバイトを書き込みます。voidwriteU2(int x) バッファに2バイト(短い)を書き込みます。
-
メソッドの詳細
-
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) 2バイト(短い)をバッファに書き込みます。xは2バイトに切り捨てられ、書き込まれます。- パラメータ:
x- shortに切り捨てる値
-
writeInt
void writeInt(int x) バッファに4バイト(int)を書き込みます。- パラメータ:
x- int値
-
writeFloat
void writeFloat(float x) 4バイトの浮動小数点値をバッファに書き込みます。変換では、
floatのすべてのNaN値を1つの「"canonical" NaN値」に縮小できる場合とできない場合があります。- パラメータ:
x- float値
-
writeLong
void writeLong(long x) バッファに8バイト(long)を書き込みます。- パラメータ:
x- long値
-
writeDouble
void writeDouble(double x) 8バイトのdouble値をバッファに書き込みます。変換では、
doubleのすべてのNaN値を1つの「"canonical" 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- パッチ適用されたintが範囲外の場合- 関連項目:
-
writeIntBytes
void writeIntBytes(int intSize, long intValue) マルチバイト値をバッファに書き込みます。intValueは、指定されたintSizeバイト数に切り捨てられ、書き込まれます。- パラメータ:
intSize- 書き込まれる整数のサイズ(バイト単位)intValue- 切り捨てられる値
-
writeIndex
void writeIndex(PoolEntry entry) 指定された定数プール・エントリのインデックスをu2として書き込みます。entryがこのバッファの「定数プール」に属していない場合、convertedになり、変換されたプール・エントリの索引がかわりに書き込まれます。- パラメータ:
entry- 定数プール・エントリ- スロー:
IllegalArgumentException- エントリに無効なインデックスがある場合
-
writeIndexOrZero
void writeIndexOrZero(PoolEntry entry) 指定された定数プール・エントリの索引、または指定されたエントリがnullの場合は値0をu2として書き込みます。entryがこのバッファの「定数プール」に属していない場合、convertedになり、変換されたプール・エントリの索引がかわりに書き込まれます。- パラメータ:
entry- 定数プール・エントリ(null)- スロー:
IllegalArgumentException- エントリがnullではなく、索引が無効な場合
-
size
int size()バッファに書き込まれたバイト数を返します。- 戻り値:
- バッファに書き込まれたバイト数
- 関連項目:
-