Interface InstrumentedType

All Superinterfaces:
AnnotationSource, ByteCodeElement, DeclaredByType, Iterable<TypeDefinition>, ModifierReviewable, ModifierReviewable.ForTypeDefinition, ModifierReviewable.OfAbstraction, ModifierReviewable.OfByteCodeElement, ModifierReviewable.OfEnumeration, NamedElement, NamedElement.WithDescriptor, NamedElement.WithRuntimeName, TypeDefinition, TypeDescription, TypeVariableSource
All Known Subinterfaces:
InstrumentedType.WithFlexibleName
All Known Implementing Classes:
InstrumentedType.Default, InstrumentedType.Frozen

public interface InstrumentedType extends TypeDescription
Implementations of this interface represent an instrumented type that is subject to change. Implementations should however be immutable and return new instance when its builder methods are invoked.
  • Method Details

    • withField

      Creates a new instrumented type that includes a new field.
      Parameters:
      token - A token that represents the field's shape.
      Returns:
      A new instrumented type that is equal to this instrumented type but with the additional field.
    • withAuxiliaryField

      InstrumentedType withAuxiliaryField(FieldDescription.Token token, Object value)
      Creates a new instrumented type that includes a new field.
      Parameters:
      token - A token that represents the field's shape.
      value - The value that this assigned to this field.
      Returns:
      A new instrumented type that is equal to this instrumented type but with the additional field.
    • withMethod

      Creates a new instrumented type that includes a new method or constructor.
      Parameters:
      token - A token that represents the method's shape.
      Returns:
      A new instrumented type that is equal to this instrumented type but with the additional method.
    • withRecordComponent

      Creates a new instrumented type that includes a new record component.
      Parameters:
      token - A token that represents the record component's shape.
      Returns:
      A new instrumented type that is equal to this instrumented type but with the additional record component.
    • withModifiers

      InstrumentedType withModifiers(int modifiers)
      Creates a new instrumented type with changed modifiers.
      Parameters:
      modifiers - The instrumented type's modifiers.
      Returns:
      A new instrumented type that is equal to this instrumented type but with the given modifiers.
    • withInterfaces

      InstrumentedType withInterfaces(TypeList.Generic interfaceTypes)
      Creates a new instrumented type with the given interfaces implemented.
      Parameters:
      interfaceTypes - The interface types to implement.
      Returns:
      A new instrumented type that is equal to this instrumented type but with the given interfaces implemented.
    • withTypeVariable

      InstrumentedType withTypeVariable(TypeVariableToken typeVariable)
      Creates a new instrumented type with the given type variable defined.
      Parameters:
      typeVariable - The type variable to declare.
      Returns:
      A new instrumented type that is equal to this instrumented type but with the given type variable declared.
    • withAnnotations

      InstrumentedType withAnnotations(List<? extends AnnotationDescription> annotationDescriptions)
      Creates a new instrumented type with the given annotations.
      Parameters:
      annotationDescriptions - The annotations to add to the instrumented type.
      Returns:
      A new instrumented type that is equal to this instrumented type but annotated with the given annotations
    • withNestHost

      InstrumentedType withNestHost(TypeDescription nestHost)
      Creates a new instrumented type with the supplied nest host. An instrumented type can be its own nest host. Setting a nest host removes all nest members from the instrumented type.
      Parameters:
      nestHost - The nest host of the created instrumented type.
      Returns:
      A new instrumented type with the supplied type as its nest host.
    • withNestMembers

      InstrumentedType withNestMembers(TypeList nestMembers)
      Creates a new instrumented types with the supplied nest members added to this instrumented type. The instrumented type is defined as a nest host if this method is invoked. Any previous nest members are prepended to the supplied types.
      Parameters:
      nestMembers - The nest members to add to the created instrumented type.
      Returns:
      A new instrumented type that applies the supplied nest members.
    • withEnclosingType

      InstrumentedType withEnclosingType(TypeDescription enclosingType)
      Creates a new instrumented type with the supplied enclosing type.
      Parameters:
      enclosingType - The type to define as the created instrumented type's enclosing type.
      Returns:
      A new instrumented type with the supplied type as its enclosing type.
    • withEnclosingMethod

      InstrumentedType withEnclosingMethod(MethodDescription.InDefinedShape enclosingMethod)
      Creates a new instrumented type with the supplied enclosing method.
      Parameters:
      enclosingMethod - The method to define as the created instrumented type's enclosing method.
      Returns:
      A new instrumented type with the supplied method as its enclosing method.
    • withDeclaringType

      InstrumentedType withDeclaringType(@MaybeNull TypeDescription declaringType)
      Creates a new instrumented type that is declared by the supplied type.
      Parameters:
      declaringType - The type that declares the instrumented type or null if no such type exists.
      Returns:
      A new instrumented type that is declared by the instrumented type.
    • withDeclaredTypes

      InstrumentedType withDeclaredTypes(TypeList declaredTypes)
      Creates a new instrumented type that indicates that it declared the supplied types.
      Parameters:
      declaredTypes - The types to add to the created instrumented type as declared types.
      Returns:
      A new instrumented type that indicates that it has declared the supplied types.
    • withPermittedSubclasses

      InstrumentedType withPermittedSubclasses(@MaybeNull TypeList permittedSubclasses)
      Creates a new instrumented type that includes the supplied permitted subclasses or unseals the type.
      Parameters:
      permittedSubclasses - A list of permitted subclasses to include or null to unseal the type.
      Returns:
      A new instrumented type that includes the supplied permitted subclasses or unseals the type.
    • withLocalClass

      InstrumentedType withLocalClass(boolean localClass)
      Creates a new instrumented type that indicates that is defined as a local class. Setting this property resets the anonymous class property.
      Parameters:
      localClass - true if the instrumented type is supposed to be treated as a local class.
      Returns:
      A new instrumented type that is treated as a local class.
    • withAnonymousClass

      InstrumentedType withAnonymousClass(boolean anonymousClass)
      Creates a new instrumented type that indicates that it is defined as an anonymous class. Setting this property resets the local class property.
      Parameters:
      anonymousClass - true if the instrumented type is supposed to be treated as an anonymous class.
      Returns:
      A new instrumented type that is treated as an anonymous class.
    • withRecord

      InstrumentedType withRecord(boolean record)
      Creates a new instrumented type that indicates that it defined as a record type. Setting this property to false removes all record components.
      Parameters:
      record - true if the instrumented type is supposed to be a record.
      Returns:
      A new instrumented type that is defined as a record.
    • withInitializer

      InstrumentedType withInitializer(LoadedTypeInitializer loadedTypeInitializer)
      Creates a new instrumented type that includes the given LoadedTypeInitializer.
      Parameters:
      loadedTypeInitializer - The type initializer to include.
      Returns:
      A new instrumented type that is equal to this instrumented type but with the additional type initializer.
    • withInitializer

      InstrumentedType withInitializer(ByteCodeAppender byteCodeAppender)
      Creates a new instrumented type that executes the given initializer in the instrumented type's type initializer.
      Parameters:
      byteCodeAppender - The byte code to add to the type initializer.
      Returns:
      A new instrumented type that is equal to this instrumented type but with the given stack manipulation attached to its type initializer.
    • getLoadedTypeInitializer

      LoadedTypeInitializer getLoadedTypeInitializer()
      Returns the LoadedTypeInitializers that were registered for this instrumented type.
      Returns:
      The registered loaded type initializers for this instrumented type.
    • getTypeInitializer

      TypeInitializer getTypeInitializer()
      Returns this instrumented type's type initializer.
      Returns:
      This instrumented type's type initializer.
    • validated

      TypeDescription validated()
      Validates the instrumented type to define a legal Java type.
      Returns:
      This instrumented type as a non-modifiable type description.