列挙型クラスClassFile.ConstantPoolSharingOption

java.lang.Object
java.lang.Enum<ClassFile.ConstantPoolSharingOption>
java.lang.classfile.ClassFile.ConstantPoolSharingOption
すべての実装されたインタフェース:
Serializable, ClassFile.Option, Comparable<ClassFile.ConstantPoolSharingOption>, Constable
含まれているインタフェース:
ClassFile

public static enum ClassFile.ConstantPoolSharingOption extends Enum<ClassFile.ConstantPoolSharingOption> implements ClassFile.Option
classファイルの変換時に元の定数プールから拡張するかどうかを示すオプション。 デフォルトはSHARED_POOLで、元の定数プールから拡張されます。

このオプションは、transformClassのすべてのオーバーロードに影響します。 元の定数プールから拡張すると、索引は定数プールにそのまま保持されるため、処理時間の大幅な最適化が可能になり、元の classファイルと変換された classファイルの差異が最小限に抑えられますが、元のclassファイルの多くの要素が削除され、元の定数プール・エントリの多くが使用されなくなると、変換されたclassファイルが大きくなる可能性があります。

このオプションのかわりに、ClassFile.build(ClassEntry, ConstantPoolBuilder, Consumer)を直接使用します。 任意の定数プールからの拡張が可能で、ビルドされたclassファイルが複数の元のclassファイルの構造を再利用する場合に便利です。

導入されたバージョン:
24
関連項目:
  • 列挙型定数の詳細

    • SHARED_POOL

      public static final ClassFile.ConstantPoolSharingOption SHARED_POOL
      classファイルを変換するときに、元の定数プールから新しい定数プールを拡張します。

      次の2つの変換は同等です:

      ClassModel originalClass = ...
      ClassDesc resultClassName = ...
      ClassTransform classTransform = ...
      var resultOne = ClassFile.of(ConstantPoolSharingOption.SHARED_POOL)
              .transformClass(originalClass, resultClassName, classTransform);
      var resultTwo = ClassFile.of().build(resultClassName, ConstantPoolBuilder.of(originalClass),
              clb -> clb.transform(originalClass, classTransform));
      

      関連項目:
    • NEW_POOL

      public static final ClassFile.ConstantPoolSharingOption NEW_POOL
      classファイルの変換時に新しい定数プールを作成します。

      次の2つの変換は同等です:

      ClassModel originalClass = ...
      ClassDesc resultClassName = ...
      ClassTransform classTransform = ...
      var resultOne = ClassFile.of(ConstantPoolSharingOption.NEW_POOL)
              .transformClass(originalClass, resultClassName, classTransform);
      var resultTwo = ClassFile.of().build(resultClassName, ConstantPoolBuilder.of(),
              clb -> clb.transform(originalClass, classTransform));
      

      関連項目:
  • メソッドの詳細

    • values

      public static ClassFile.ConstantPoolSharingOption[] values()
      この列挙クラスの定数を含む配列を宣言されている順序で 返します。
      戻り値:
      この列挙クラスの定数を宣言されている順序で含む配列
    • valueOf

      public static ClassFile.ConstantPoolSharingOption valueOf(String name)
      指定された名前を持つこのクラスのenum定数を返します。 文字列は、このクラスでenum定数を宣言するために使用される識別子と正確に一致する必要があります。 (不適切な空白文字は許可されません。)
      パラメータ:
      name - 返される列挙型定数の名前。
      戻り値:
      指定された名前を持つ列挙型定数
      スロー:
      IllegalArgumentException - この列挙型クラスに指定された名前の定数がない場合
      NullPointerException - 引数がnullの場合