インタフェースClassReader

すべてのスーパー・インタフェース:
ConstantPool, Iterable<PoolEntry>

public sealed interface ClassReader extends ConstantPool
AttributeMapperの高度なclassファイル読取りサポート。 classファイル内の任意のオフセットを読み取り、一定のプール・アクセスに加えて様々な数値型(e.g., u2, u4)のデータを読み取ることをサポートします。

classファイル形式のすべての数値は、「ビッグ・エンディアン」です。

特に指定がないかぎり、すべての範囲外アクセスの結果は、classファイル・データの形式が不正であることを示すIllegalArgumentExceptionになります。 classファイル・データは任意であるため、ユーザーは、不正な形式のデータの解釈を試行する前に、データの構造的整合性を妥当性チェックする必要があります。

導入されたバージョン:
24
関連項目:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    int
    classファイルの長さをバイト数で返します。
    void
    copyBytesTo(BufWriter buf, int offset, int len)
    classファイルからBufWriterにバイト範囲をコピーします。
    カスタム属性マッパーの表を返します。
    int
    クラスのアクセス・フラグをビット・マスクとして返します。
    byte[]
    readBytes(int offset, int len)
    classファイルの指定された範囲のバイトのコピーを返します。
    double
    readDouble(int offset)
    classファイル内の指定されたオフセットでdouble値を返します。
    readEntry(int offset)
    classファイル内の指定されたオフセットで索引が指定されている定数プール・エントリを返します。
    <T extends PoolEntry>
    T
    readEntry(int offset, Class<T> cls)
    classファイル内の指定されたオフセットで索引が指定されている特定のタイプの定数プール・エントリを返します。
    readEntryOrNull(int offset)
    classファイル内の指定されたオフセットで索引が指定されている定数プール・エントリを返します。指定されたオフセットでの索引がゼロの場合はnullを返します。
    <T extends PoolEntry>
    T
    readEntryOrNull(int offset, Class<T> cls)
    classファイル内の指定されたオフセットで索引が指定されている特定のタイプの定数プール・エントリを返します。指定されたオフセットでの索引がゼロの場合はnullを返します。
    float
    readFloat(int offset)
    classファイル内の指定されたオフセットで浮動小数値を返します。
    int
    readInt(int offset)
    classファイル内の指定されたオフセットで符号付きintを返します。
    long
    readLong(int offset)
    classファイル内の指定されたオフセットで符号付きlongを返します。
    int
    readS1(int offset)
    classファイル内の指定されたオフセットで符号付きバイトを返します。
    int
    readS2(int offset)
    classファイル内の指定されたオフセットで符号付きバイトを返します。
    int
    readU1(int offset)
    classファイル内の指定されたオフセットにある符号なしバイトを返します。
    int
    readU2(int offset)
    classファイル内の指定されたオフセットで符号なしshortを返します。
    スーパークラスの名前を記述する定数プール・エントリ(存在する場合)を返します。
    クラスの名前を記述する定数プール・エントリを返します。

    インタフェースjava.lang.classfile.constantpool.ConstantPoolで宣言されたメソッド

    bootstrapMethodCount, bootstrapMethodEntry, entryByIndex, entryByIndex, iterator, size

    インタフェースjava.lang.Iterableで宣言されたメソッド

    forEach, spliterator
  • メソッドの詳細

    • customAttributes

      Function<Utf8Entry, AttributeMapper<?>> customAttributes()
      カスタム属性マッパーの表を返します。 これは、処理オプションClassFile.AttributeMapperOptionから導出されます。
      戻り値:
      カスタム属性マッパーの表
    • flags

      int flags()
      クラスのアクセス・フラグをビット・マスクとして返します。
      戻り値:
      クラスのアクセス・フラグ(ビット・マスク)
      関連項目:
    • thisClassEntry

      ClassEntry thisClassEntry()
      クラスの名前を記述する定数プール・エントリを返します。
      戻り値:
      クラスの名前を記述する定数プール・エントリ
      関連項目:
    • superclassEntry

      Optional<ClassEntry> superclassEntry()
      スーパークラスの名前を記述する定数プール・エントリ(存在する場合)を返します。
      戻り値:
      スーパークラスの名前を記述する定数プール・エントリ(存在する場合)
      関連項目:
    • classfileLength

      int classfileLength()
      classファイルの長さをバイト数で返します。
      戻り値:
      classファイルの長さ(バイト数)
    • readEntry

      PoolEntry readEntry(int offset)
      classファイル内の指定されたオフセットで索引が指定されている定数プール・エントリを返します。
      APIのノート:
      特定のタイプのエントリのみが必要な場合は、readEntry(int, Class)を使用します。
      パラメータ:
      offset - classファイル内の索引のオフセット
      戻り値:
      classファイル内の指定されたオフセットで索引が指定されている定数プール・エントリ
      スロー:
      ConstantPoolException - 索引が定数プール・サイズの範囲外である場合、またはゼロの場合
    • readEntry

      <T extends PoolEntry> T readEntry(int offset, Class<T> cls)
      classファイル内の指定されたオフセットで索引が指定されている特定のタイプの定数プール・エントリを返します。
      型パラメータ:
      T - 入力タイプ
      パラメータ:
      offset - classファイル内の索引のオフセット
      cls - 入力タイプ
      戻り値:
      classファイル内で指定されたオフセットで索引が指定されている特定のタイプの定数プール・エントリ
      スロー:
      ConstantPoolException - 索引が定数プール・サイズの範囲外であるか、ゼロであるか、またはエントリが指定のタイプでない場合
    • readEntryOrNull

      PoolEntry readEntryOrNull(int offset)
      classファイル内の指定されたオフセットで索引が指定されている定数プール・エントリを返します。指定されたオフセットでの索引がゼロの場合はnullを返します。
      APIのノート:
      特定のタイプのエントリのみが必要な場合は、readEntryOrNull(int, Class)を使用します。
      パラメータ:
      offset - classファイル内の索引のオフセット
      戻り値:
      classファイル内の指定されたオフセットで索引が指定されている定数プール・エントリ、または指定されたオフセットでの索引がゼロの場合はnull
      スロー:
      ConstantPoolException - 索引が定数プール・サイズの範囲外である場合
    • readEntryOrNull

      <T extends PoolEntry> T readEntryOrNull(int offset, Class<T> cls)
      classファイル内の指定されたオフセットで索引が指定されている特定のタイプの定数プール・エントリを返します。指定されたオフセットでの索引がゼロの場合はnullを返します。
      型パラメータ:
      T - 入力タイプ
      パラメータ:
      offset - classファイル内の索引のオフセット
      cls - 入力タイプ
      戻り値:
      classファイル内の指定されたオフセットで索引が指定されている特定のタイプの定数プール・エントリ、または指定されたオフセットでの索引がゼロの場合はnull
      スロー:
      ConstantPoolException - 索引が定数プール・サイズの範囲外であるか、ゼロであるか、またはエントリが指定のタイプでない場合
    • readU1

      int readU1(int offset)
      classファイル内の指定されたオフセットにある符号なしバイトを返します。 バイトを読み取り、ゼロでintに拡張します。
      パラメータ:
      offset - classファイル内のオフセット
      戻り値:
      classファイル内で指定されたオフセットにある符号なしバイト
    • readU2

      int readU2(int offset)
      classファイル内の指定されたオフセットで符号なしshortを返します。 2バイトの値を読み取り、ゼロでintに拡張します。
      パラメータ:
      offset - classファイル内のオフセット
      戻り値:
      classファイル内で指定されたオフセットにある符号なしshort
    • readS1

      int readS1(int offset)
      classファイル内の指定されたオフセットで符号付きバイトを返します。 バイトを読み取り、それをintに署名します。
      パラメータ:
      offset - classファイル内のオフセット
      戻り値:
      classファイル内の指定されたオフセットにある署名付きバイト
    • readS2

      int readS2(int offset)
      classファイル内の指定されたオフセットで符号付きバイトを返します。 2バイト値を読み取り、それをintに署名します。
      パラメータ:
      offset - classファイル内のオフセット
      戻り値:
      classファイル内の指定されたオフセットにある署名付きバイト
    • readInt

      int readInt(int offset)
      classファイル内の指定されたオフセットで符号付きintを返します。 4バイトの値を読み取ります。
      パラメータ:
      offset - classファイル内のオフセット
      戻り値:
      classファイル内の指定されたオフセットにある符号付きint
    • readLong

      long readLong(int offset)
      classファイル内の指定されたオフセットで符号付きlongを返します。 8バイトの値を読み取ります。
      パラメータ:
      offset - classファイル内のオフセット
      戻り値:
      classファイル内の指定されたオフセットでの符号付きlong
    • readFloat

      float readFloat(int offset)
      classファイル内の指定されたオフセットで浮動小数値を返します。 4バイトの値を読み取ります。

      変換では、floatのすべてのNaN値を1つの「"canonical" NaN値」に縮小できる場合とできない場合があります。

      パラメータ:
      offset - classファイル内のオフセット
      戻り値:
      classファイル内で指定されたオフセットにあるfloat値
    • readDouble

      double readDouble(int offset)
      classファイル内の指定されたオフセットでdouble値を返します。 8バイトの値を読み取ります。

      変換では、doubleのすべてのNaN値を1つの「"canonical" NaN値」に縮小できる場合とできない場合があります。

      パラメータ:
      offset - classファイル内のオフセット
      戻り値:
      classファイル内の指定されたオフセットでのdouble値
    • readBytes

      byte[] readBytes(int offset, int len)
      classファイルの指定された範囲のバイトのコピーを返します。
      パラメータ:
      offset - classファイル内のオフセット
      len - 範囲の長さ
      戻り値:
      classファイルの指定された範囲のバイトのコピー
    • copyBytesTo

      void copyBytesTo(BufWriter buf, int offset, int len)
      classファイルからBufWriterにバイト範囲をコピーします。
      パラメータ:
      buf - the BufWriter
      offset - classファイル内のオフセット
      len - 範囲の長さ