Interface ConstantPoolBuilder

All Superinterfaces:
ClassFileElementPREVIEW, ConstantPoolPREVIEW, Iterable<PoolEntryPREVIEW>, WritableElementPREVIEW<ConstantPoolPREVIEW>

public sealed interface ConstantPoolBuilder extends ConstantPoolPREVIEW, WritableElementPREVIEW<ConstantPoolPREVIEW>
ConstantPoolBuilder is a preview API of the Java platform.
Programs can only use ConstantPoolBuilder when preview features are enabled.
Preview features may be removed in a future release, or upgraded to permanent features of the Java platform.
Builder for the constant pool of a classfile. Provides read and write access to the constant pool that is being built. Writing is append-only and idempotent (entry-bearing methods will return an existing entry if there is one). A ConstantPoolBuilderPREVIEW is associated with a ClassBuilderPREVIEW. The ConstantPoolBuilderPREVIEW also provides access to some of the state of the ClassBuilderPREVIEW, such as classfile processing options.
Since:
22
  • Method Details

    • of

      Returns a new constant pool builder. The new constant pool builder will be pre-populated with the contents of the constant pool associated with the class reader.
      Parameters:
      classModel - the class to copy from
      Returns:
      a new constant pool builder
    • of

      Returns a new constant pool builder. The new constant pool builder will be empty.
      Returns:
      a new constant pool builder
    • canWriteDirect

      boolean canWriteDirect(ConstantPoolPREVIEW constantPool)
      Returns whether the provided constant pool is index-compatible with this one. This may be because they are the same constant pool, or because this constant pool was copied from the other.
      Parameters:
      constantPool - the other constant pool
      Returns:
      whether the provided constant pool is index-compatible with this one
    • writeBootstrapMethods

      boolean writeBootstrapMethods(BufWriterPREVIEW buf)
      Writes associated bootstrap method entries to the specified writer
      Parameters:
      buf - the writer
      Returns:
      false when no bootstrap method entry has been written
    • utf8Entry

      Utf8EntryPREVIEW utf8Entry(String s)
      Returns A Utf8EntryPREVIEW describing the provided String. If a UTF8 entry in the pool already describes this string, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      s - the string
      Returns:
      A Utf8EntryPREVIEW describing the provided String
    • utf8Entry

      default Utf8EntryPREVIEW utf8Entry(ClassDesc desc)
      Returns A Utf8EntryPREVIEW describing the field descriptor of the provided ClassDesc. If a UTF8 entry in the pool already describes this field descriptor, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      desc - the symbolic descriptor for the class
      Returns:
      A Utf8EntryPREVIEW describing the field descriptor of the provided ClassDesc
    • utf8Entry

      default Utf8EntryPREVIEW utf8Entry(MethodTypeDesc desc)
      Returns A Utf8EntryPREVIEW describing the method descriptor of the provided MethodTypeDesc. If a UTF8 entry in the pool already describes this field descriptor, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      desc - the symbolic descriptor for the method type
      Returns:
      A Utf8EntryPREVIEW describing the method descriptor of the provided MethodTypeDesc
    • classEntry

      Returns A ClassEntryPREVIEW describing the class whose internal name is encoded in the provided Utf8EntryPREVIEW. If a Class entry in the pool already describes this class, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      ne - the constant pool entry describing the internal name of the class
      Returns:
      A ClassEntryPREVIEW describing the class whose internal name is encoded in the provided Utf8EntryPREVIEW
    • classEntry

      default ClassEntryPREVIEW classEntry(ClassDesc classDesc)
      Returns A ClassEntryPREVIEW describing the class described by provided ClassDesc. If a Class entry in the pool already describes this class, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      classDesc - the symbolic descriptor for the class
      Returns:
      A ClassEntryPREVIEW describing the class described by provided ClassDesc
      Throws:
      IllegalArgumentException - if classDesc represents a primitive type
    • packageEntry

      PackageEntryPREVIEW packageEntry(Utf8EntryPREVIEW nameEntry)
      Returns A PackageEntryPREVIEW describing the class whose internal name is encoded in the provided Utf8EntryPREVIEW. If a Package entry in the pool already describes this class, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      nameEntry - the constant pool entry describing the internal name of the package
      Returns:
      A PackageEntryPREVIEW describing the class whose internal name is encoded in the provided Utf8EntryPREVIEW
    • packageEntry

      default PackageEntryPREVIEW packageEntry(PackageDesc packageDesc)
      Returns A PackageEntryPREVIEW describing the class described by provided PackageDesc. If a Package entry in the pool already describes this class, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      packageDesc - the symbolic descriptor for the class
      Returns:
      A PackageEntryPREVIEW describing the class described by provided PackageDesc
    • moduleEntry

      ModuleEntryPREVIEW moduleEntry(Utf8EntryPREVIEW moduleName)
      Returns A ModuleEntryPREVIEW describing the module whose name is encoded in the provided Utf8EntryPREVIEW. If a module entry in the pool already describes this class, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      moduleName - the constant pool entry describing the module name
      Returns:
      A ModuleEntryPREVIEW describing the module whose name is encoded in the provided Utf8EntryPREVIEW
    • moduleEntry

      default ModuleEntryPREVIEW moduleEntry(ModuleDesc moduleDesc)
      Returns A ModuleEntryPREVIEW describing the module described by provided ModuleDesc. If a module entry in the pool already describes this class, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      moduleDesc - the symbolic descriptor for the class
      Returns:
      A ModuleEntryPREVIEW describing the module described by provided ModuleDesc
    • nameAndTypeEntry

      NameAndTypeEntryPREVIEW nameAndTypeEntry(Utf8EntryPREVIEW nameEntry, Utf8EntryPREVIEW typeEntry)
      Returns A NameAndTypeEntryPREVIEW describing the provided name and type. If a NameAndType entry in the pool already describes this name and type, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      nameEntry - the member name
      typeEntry - the member field or method descriptor
      Returns:
      A NameAndTypeEntryPREVIEW describing the provided name and type
    • nameAndTypeEntry

      default NameAndTypeEntryPREVIEW nameAndTypeEntry(String name, ClassDesc type)
      Returns A NameAndTypeEntryPREVIEW describing the provided name and type. If a NameAndType entry in the pool already describes this name and type, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      name - the member name
      type - the symbolic descriptor for a field type
      Returns:
      A NameAndTypeEntryPREVIEW describing the provided name and type
    • nameAndTypeEntry

      default NameAndTypeEntryPREVIEW nameAndTypeEntry(String name, MethodTypeDesc type)
      Returns A NameAndTypeEntryPREVIEW describing the provided name and type. If a NameAndType entry in the pool already describes this name and type, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      name - the member name
      type - the symbolic descriptor for a method type
      Returns:
      A NameAndTypeEntryPREVIEW describing the provided name and type
    • fieldRefEntry

      Returns A FieldRefEntryPREVIEW describing a field of a class. If a FieldRef entry in the pool already describes this field, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      owner - the class the field is a member of
      nameAndType - the name and type of the field
      Returns:
      A FieldRefEntryPREVIEW describing a field of a class
    • fieldRefEntry

      default FieldRefEntryPREVIEW fieldRefEntry(ClassDesc owner, String name, ClassDesc type)
      Returns A FieldRefEntryPREVIEW describing a field of a class. If a FieldRef entry in the pool already describes this field, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      owner - the class the field is a member of
      name - the name of the field
      type - the type of the field
      Returns:
      A FieldRefEntryPREVIEW describing a field of a class
      Throws:
      IllegalArgumentException - if owner represents a primitive type
    • methodRefEntry

      Returns A MethodRefEntryPREVIEW describing a method of a class. If a MethodRefEntry entry in the pool already describes this method, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      owner - the class the method is a member of
      nameAndType - the name and type of the method
      Returns:
      A MethodRefEntryPREVIEW describing a method of a class
    • methodRefEntry

      default MethodRefEntryPREVIEW methodRefEntry(ClassDesc owner, String name, MethodTypeDesc type)
      Returns A MethodRefEntryPREVIEW describing a method of a class. If a MethodRefEntry entry in the pool already describes this method, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      owner - the class the method is a member of
      name - the name of the method
      type - the type of the method
      Returns:
      A MethodRefEntryPREVIEW describing a method of a class
      Throws:
      IllegalArgumentException - if owner represents a primitive type
    • interfaceMethodRefEntry

      InterfaceMethodRefEntryPREVIEW interfaceMethodRefEntry(ClassEntryPREVIEW owner, NameAndTypeEntryPREVIEW nameAndType)
      Returns A InterfaceMethodRefEntryPREVIEW describing a method of a class. If a InterfaceMethodRefEntry entry in the pool already describes this method, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      owner - the class the method is a member of
      nameAndType - the name and type of the method
      Returns:
      A InterfaceMethodRefEntryPREVIEW describing a method of a class
    • interfaceMethodRefEntry

      default InterfaceMethodRefEntryPREVIEW interfaceMethodRefEntry(ClassDesc owner, String name, MethodTypeDesc type)
      Returns A InterfaceMethodRefEntryPREVIEW describing a method of a class. If a InterfaceMethodRefEntry entry in the pool already describes this method, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      owner - the class the method is a member of
      name - the name of the method
      type - the type of the method
      Returns:
      A InterfaceMethodRefEntryPREVIEW describing a method of a class
      Throws:
      IllegalArgumentException - if owner represents a primitive type
    • methodTypeEntry

      MethodTypeEntryPREVIEW methodTypeEntry(MethodTypeDesc descriptor)
      Returns A MethodTypeEntryPREVIEW describing a method type. If a MethodType entry in the pool already describes this method type, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      descriptor - the symbolic descriptor of the method type
      Returns:
      A MethodTypeEntryPREVIEW describing a method type
    • methodTypeEntry

      MethodTypeEntryPREVIEW methodTypeEntry(Utf8EntryPREVIEW descriptor)
      Returns A MethodTypeEntryPREVIEW describing a method type. If a MethodType entry in the pool already describes this method type, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      descriptor - the constant pool entry for the method type descriptor
      Returns:
      A MethodTypeEntryPREVIEW describing a method type
    • methodHandleEntry

      default MethodHandleEntryPREVIEW methodHandleEntry(DirectMethodHandleDesc descriptor)
      Returns A MethodHandleEntryPREVIEW describing a direct method handle. If a MethodHandle entry in the pool already describes this method handle, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      descriptor - the symbolic descriptor of the method handle
      Returns:
      A MethodHandleEntryPREVIEW describing a direct method handle
    • methodHandleEntry

      MethodHandleEntryPREVIEW methodHandleEntry(int refKind, MemberRefEntryPREVIEW reference)
      Returns A MethodHandleEntryPREVIEW describing a field accessor or method. If a MethodHandle entry in the pool already describes this method handle, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      refKind - the reference kind of the method handle 4.4.8
      reference - the constant pool entry describing the field or method
      Returns:
      A MethodHandleEntryPREVIEW describing a field accessor or method
    • invokeDynamicEntry

      default InvokeDynamicEntryPREVIEW invokeDynamicEntry(DynamicCallSiteDesc dcsd)
      Returns An InvokeDynamicEntryPREVIEW describing a dynamic call site. If an InvokeDynamic entry in the pool already describes this site, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      dcsd - the symbolic descriptor of the method handle
      Returns:
      An InvokeDynamicEntryPREVIEW describing a dynamic call site
    • invokeDynamicEntry

      InvokeDynamicEntryPREVIEW invokeDynamicEntry(BootstrapMethodEntryPREVIEW bootstrapMethodEntry, NameAndTypeEntryPREVIEW nameAndType)
      Returns An InvokeDynamicEntryPREVIEW describing a dynamic call site. If an InvokeDynamic entry in the pool already describes this site, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      bootstrapMethodEntry - the entry in the bootstrap method table
      nameAndType - the invocation name and type
      Returns:
      An InvokeDynamicEntryPREVIEW describing a dynamic call site
    • constantDynamicEntry

      default ConstantDynamicEntryPREVIEW constantDynamicEntry(DynamicConstantDesc<?> dcd)
      Returns A ConstantDynamicEntryPREVIEW describing a dynamic constant. If a ConstantDynamic entry in the pool already describes this site, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      dcd - the symbolic descriptor of the constant
      Returns:
      A ConstantDynamicEntryPREVIEW describing a dynamic constant
    • constantDynamicEntry

      ConstantDynamicEntryPREVIEW constantDynamicEntry(BootstrapMethodEntryPREVIEW bootstrapMethodEntry, NameAndTypeEntryPREVIEW nameAndType)
      Returns A ConstantDynamicEntryPREVIEW describing a dynamic constant. If a ConstantDynamic entry in the pool already describes this site, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      bootstrapMethodEntry - the entry in the bootstrap method table
      nameAndType - the invocation name and type
      Returns:
      A ConstantDynamicEntryPREVIEW describing a dynamic constant
    • intEntry

      IntegerEntryPREVIEW intEntry(int value)
      Returns An IntegerEntryPREVIEW describing the provided value. If an integer entry in the pool already describes this value, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      value - the value
      Returns:
      An IntegerEntryPREVIEW describing the provided value
    • floatEntry

      FloatEntryPREVIEW floatEntry(float value)
      Returns A FloatEntryPREVIEW describing the provided value. If a float entry in the pool already describes this value, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      value - the value
      Returns:
      A FloatEntryPREVIEW describing the provided value
    • longEntry

      LongEntryPREVIEW longEntry(long value)
      Returns A LongEntryPREVIEW describing the provided value. If a long entry in the pool already describes this value, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      value - the value
      Returns:
      A LongEntryPREVIEW describing the provided value
    • doubleEntry

      DoubleEntryPREVIEW doubleEntry(double value)
      Returns A DoubleEntryPREVIEW describing the provided value. If a double entry in the pool already describes this value, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      value - the value
      Returns:
      A DoubleEntryPREVIEW describing the provided value
    • stringEntry

      Returns A StringEntryPREVIEW referencing the provided UTF8 entry. If a String entry in the pool already describes this value, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      utf8 - the UTF8 entry describing the string
      Returns:
      A StringEntryPREVIEW referencing the provided UTF8 entry
    • stringEntry

      default StringEntryPREVIEW stringEntry(String value)
      Returns A StringEntryPREVIEW describing the provided value. If a string entry in the pool already describes this value, it is returned; otherwise, a new entry is added and the new entry is returned.
      Parameters:
      value - the value
      Returns:
      A StringEntryPREVIEW describing the provided value
    • constantValueEntry

      default ConstantValueEntryPREVIEW constantValueEntry(ConstantDesc c)
      Returns A ConstantValueEntryPREVIEW descripbing the provided Integer, Long, Float, Double, or String constant.
      Parameters:
      c - the constant
      Returns:
      A ConstantValueEntryPREVIEW descripbing the provided Integer, Long, Float, Double, or String constant
    • loadableConstantEntry

      default LoadableConstantEntryPREVIEW loadableConstantEntry(ConstantDesc c)
      Returns A LoadableConstantEntryPREVIEW describing the provided constant. The constant should be an Integer, String, Long, Float, Double, ClassDesc (for a Class constant), MethodTypeDesc (for a MethodType constant), DirectMethodHandleDesc (for a MethodHandle constant), or a DynamicConstantDesc (for a dynamic constant.)
      Parameters:
      c - the constant
      Returns:
      A LoadableConstantEntryPREVIEW describing the provided constant
    • annotationConstantValueEntry

      default AnnotationConstantValueEntryPREVIEW annotationConstantValueEntry(ConstantDesc c)
      Returns An AnnotationConstantValueEntryPREVIEW describing the provided constant. The constant should be an Integer, String, Long, Float, Double, ClassDesc (for a Class constant), or MethodTypeDesc (for a MethodType constant.)
      Parameters:
      c - the constant
      Returns:
      An AnnotationConstantValueEntryPREVIEW describing the provided constant
    • bsmEntry

      default BootstrapMethodEntryPREVIEW bsmEntry(DirectMethodHandleDesc methodReference, List<ConstantDesc> arguments)
      Returns a BootstrapMethodEntryPREVIEW describing the provided bootstrap method and static arguments.
      Parameters:
      methodReference - the bootstrap method
      arguments - the bootstrap arguments
      Returns:
      a BootstrapMethodEntryPREVIEW describing the provided bootstrap method and static arguments
    • bsmEntry

      Returns a BootstrapMethodEntryPREVIEW describing the provided bootstrap method and static arguments.
      Parameters:
      methodReference - the bootstrap method
      arguments - the bootstrap arguments
      Returns:
      a BootstrapMethodEntryPREVIEW describing the provided bootstrap method and static arguments