Enum TypeConstantAdjustment

java.lang.Object
java.lang.Enum<TypeConstantAdjustment>
net.bytebuddy.asm.TypeConstantAdjustment
All Implemented Interfaces:
Serializable, Comparable<TypeConstantAdjustment>, java.lang.constant.Constable, AsmVisitorWrapper

public enum TypeConstantAdjustment extends Enum<TypeConstantAdjustment> implements AsmVisitorWrapper

This class visitor wrapper ensures that class files of a version previous to Java 5 do not store class entries in the generated class's constant pool. All found class instances are instead mapped as String values where the class constant is retrieved by a call to Class.forName(String).

Warning: This can lead to subtle bugs as classes that are not available yield a ClassNotFoundException instead of a NoClassDefFoundError. The former, checked exception could therefore be thrown even if the method that unsuccessfully loads a class does not declared the checked exception. Furthermore, Class constants are not cached as fields within the class as the Java compiler implemented class constants before Java 5. As a benefit for this limitation, the registered wrapper does not require any additional work by a ClassWriter or ClassReader, i.e. does not set any flags.

  • Enum Constant Details

  • Constructor Details

    • TypeConstantAdjustment

      private TypeConstantAdjustment()
  • Method Details

    • values

      public static TypeConstantAdjustment[] values()
      Returns an array containing the constants of this enum type, in the order they are declared.
      Returns:
      an array containing the constants of this enum type, in the order they are declared
    • valueOf

      public static TypeConstantAdjustment valueOf(String name)
      Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum type has no constant with the specified name
      NullPointerException - if the argument is null
    • mergeWriter

      public int mergeWriter(int flags)
      Defines the flags that are provided to any ClassWriter when writing a class. Typically, this gives opportunity to instruct ASM to compute stack map frames or the size of the local variables array and the operand stack. If no specific flags are required for applying this wrapper, the given value is to be returned.
      Specified by:
      mergeWriter in interface AsmVisitorWrapper
      Parameters:
      flags - The currently set flags. This value should be combined (e.g. flags | foo) into the value that is returned by this wrapper.
      Returns:
      The flags to be provided to the ASM ClassWriter.
    • mergeReader

      public int mergeReader(int flags)
      Defines the flags that are provided to any ClassReader when reading a class if applicable. Typically, this gives opportunity to instruct ASM to expand or skip frames and to skip code and debug information. If no specific flags are required for applying this wrapper, the given value is to be returned.
      Specified by:
      mergeReader in interface AsmVisitorWrapper
      Parameters:
      flags - The currently set flags. This value should be combined (e.g. flags | foo) into the value that is returned by this wrapper.
      Returns:
      The flags to be provided to the ASM ClassReader.
    • wrap

      public org.objectweb.asm.ClassVisitor wrap(TypeDescription instrumentedType, org.objectweb.asm.ClassVisitor classVisitor, Implementation.Context implementationContext, TypePool typePool, FieldList<FieldDescription.InDefinedShape> fields, MethodList<?> methods, int writerFlags, int readerFlags)
      Applies a ClassVisitorWrapper to the creation of a DynamicType.
      Specified by:
      wrap in interface AsmVisitorWrapper
      Parameters:
      instrumentedType - The instrumented type.
      classVisitor - A ClassVisitor to become the new primary class visitor to which the created DynamicType is written to.
      implementationContext - The implementation context of the current instrumentation.
      typePool - The type pool that was provided for the class creation.
      fields - The instrumented type's fields.
      methods - The instrumented type's methods non-ignored declared and virtually inherited methods.
      writerFlags - The ASM ClassWriter flags to consider.
      readerFlags - The ASM ClassReader flags to consider.
      Returns:
      A new ClassVisitor that usually delegates to the ClassVisitor delivered in the argument.