Class SignatureWriter

java.lang.Object
org.objectweb.asm.signature.SignatureVisitor
org.objectweb.asm.signature.SignatureWriter

public class SignatureWriter extends SignatureVisitor
A SignatureVisitor that generates signature literals, as defined in the Java Virtual Machine Specification (JVMS).
See Also:
  • Field Details

    • stringBuilder

      private final StringBuilder stringBuilder
      The builder used to construct the visited signature.
    • hasFormals

      private boolean hasFormals
      Whether the visited signature contains formal type parameters.
    • hasParameters

      private boolean hasParameters
      Whether the visited signature contains method parameter types.
    • argumentStack

      private int argumentStack
      The stack used to keep track of class types that have arguments. Each element of this stack is a boolean encoded in one bit. The top of the stack is the least significant bit. The bottom of the stack is a sentinel element always equal to 1 (used to detect when the stack is full). Pushing false = <<= 1, pushing true = ( <<= 1) | 1, popping = >>>= 1.

      Class type arguments must be surrounded with '<' and '>' and, because

      1. class types can be nested (because type arguments can themselves be class types),
      2. SignatureWriter always returns 'this' in each visit* method (to avoid allocating new SignatureWriter instances),

      we need a stack to properly balance these angle brackets. A new element is pushed on this stack for each new visited type, and popped when the visit of this type ends (either in visitEnd, or because visitInnerClassType is called).

  • Constructor Details

    • SignatureWriter

      public SignatureWriter()
      Constructs a new SignatureWriter.
    • SignatureWriter

      private SignatureWriter(StringBuilder stringBuilder)
  • Method Details

    • visitFormalTypeParameter

      public void visitFormalTypeParameter(String name)
      Description copied from class: SignatureVisitor
      Visits a formal type parameter.
      Overrides:
      visitFormalTypeParameter in class SignatureVisitor
      Parameters:
      name - the name of the formal parameter.
    • visitClassBound

      public SignatureVisitor visitClassBound()
      Description copied from class: SignatureVisitor
      Visits the class bound of the last visited formal type parameter.
      Overrides:
      visitClassBound in class SignatureVisitor
      Returns:
      a non null visitor to visit the signature of the class bound.
    • visitInterfaceBound

      public SignatureVisitor visitInterfaceBound()
      Description copied from class: SignatureVisitor
      Visits an interface bound of the last visited formal type parameter.
      Overrides:
      visitInterfaceBound in class SignatureVisitor
      Returns:
      a non null visitor to visit the signature of the interface bound.
    • visitSuperclass

      public SignatureVisitor visitSuperclass()
      Description copied from class: SignatureVisitor
      Visits the type of the super class.
      Overrides:
      visitSuperclass in class SignatureVisitor
      Returns:
      a non null visitor to visit the signature of the super class type.
    • visitInterface

      public SignatureVisitor visitInterface()
      Description copied from class: SignatureVisitor
      Visits the type of an interface implemented by the class.
      Overrides:
      visitInterface in class SignatureVisitor
      Returns:
      a non null visitor to visit the signature of the interface type.
    • visitParameterType

      public SignatureVisitor visitParameterType()
      Description copied from class: SignatureVisitor
      Visits the type of a method parameter.
      Overrides:
      visitParameterType in class SignatureVisitor
      Returns:
      a non null visitor to visit the signature of the parameter type.
    • visitReturnType

      public SignatureVisitor visitReturnType()
      Description copied from class: SignatureVisitor
      Visits the return type of the method.
      Overrides:
      visitReturnType in class SignatureVisitor
      Returns:
      a non null visitor to visit the signature of the return type.
    • visitExceptionType

      public SignatureVisitor visitExceptionType()
      Description copied from class: SignatureVisitor
      Visits the type of a method exception.
      Overrides:
      visitExceptionType in class SignatureVisitor
      Returns:
      a non null visitor to visit the signature of the exception type.
    • visitBaseType

      public void visitBaseType(char descriptor)
      Description copied from class: SignatureVisitor
      Visits a signature corresponding to a primitive type.
      Overrides:
      visitBaseType in class SignatureVisitor
      Parameters:
      descriptor - the descriptor of the primitive type, or 'V' for void .
    • visitTypeVariable

      public void visitTypeVariable(String name)
      Description copied from class: SignatureVisitor
      Visits a signature corresponding to a type variable.
      Overrides:
      visitTypeVariable in class SignatureVisitor
      Parameters:
      name - the name of the type variable.
    • visitArrayType

      public SignatureVisitor visitArrayType()
      Description copied from class: SignatureVisitor
      Visits a signature corresponding to an array type.
      Overrides:
      visitArrayType in class SignatureVisitor
      Returns:
      a non null visitor to visit the signature of the array element type.
    • visitClassType

      public void visitClassType(String name)
      Description copied from class: SignatureVisitor
      Starts the visit of a signature corresponding to a class or interface type.
      Overrides:
      visitClassType in class SignatureVisitor
      Parameters:
      name - the internal name of the class or interface (see Type.getInternalName()).
    • visitInnerClassType

      public void visitInnerClassType(String name)
      Description copied from class: SignatureVisitor
      Visits an inner class.
      Overrides:
      visitInnerClassType in class SignatureVisitor
      Parameters:
      name - the local name of the inner class in its enclosing class.
    • visitTypeArgument

      public void visitTypeArgument()
      Description copied from class: SignatureVisitor
      Visits an unbounded type argument of the last visited class or inner class type.
      Overrides:
      visitTypeArgument in class SignatureVisitor
    • visitTypeArgument

      public SignatureVisitor visitTypeArgument(char wildcard)
      Description copied from class: SignatureVisitor
      Visits a type argument of the last visited class or inner class type.
      Overrides:
      visitTypeArgument in class SignatureVisitor
      Parameters:
      wildcard - '+', '-' or '='.
      Returns:
      a non null visitor to visit the signature of the type argument.
    • visitEnd

      public void visitEnd()
      Description copied from class: SignatureVisitor
      Ends the visit of a signature corresponding to a class or interface type.
      Overrides:
      visitEnd in class SignatureVisitor
    • toString

      public String toString()
      Returns the signature that was built by this signature writer.
      Overrides:
      toString in class Object
      Returns:
      the signature that was built by this signature writer.
    • endFormals

      private void endFormals()
      Ends the formal type parameters section of the signature.
    • endArguments

      private void endArguments()
      Ends the type arguments of a class or inner class type.