Class AnnotationsWriter

  • Direct Known Subclasses:
    TypeAnnotationsWriter

    public class AnnotationsWriter
    extends java.lang.Object
    A convenience class for constructing a ..Annotations_attribute. See the source code of the AnnotationsAttribute.Copier class.

    The following code snippet is an example of use of this class:

     ConstPool pool = ...;
     output = new ByteArrayOutputStream();
     writer = new AnnotationsWriter(output, pool);
    
     writer.numAnnotations(1);
     writer.annotation("Author", 2);
     writer.memberValuePair("name");      // element_value_pair
     writer.constValueIndex("chiba");
     writer.memberValuePair("address");   // element_value_pair
     writer.constValueIndex("tokyo");
    
     writer.close();
     byte[] attribute_info = output.toByteArray();
     AnnotationsAttribute anno
         = new AnnotationsAttribute(pool, AnnotationsAttribute.visibleTag,
                                    attribute_info);
     

    The code snippet above generates the annotation attribute corresponding to this annotation:

      @Author(name = "chiba", address = "tokyo")
     
    See Also:
    AnnotationsAttribute, ParameterAnnotationsAttribute
    • Constructor Summary

      Constructors 
      Constructor Description
      AnnotationsWriter​(java.io.OutputStream os, ConstPool cp)
      Constructs with the given output stream.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void annotation​(int typeIndex, int numMemberValuePairs)
      Writes annotation.
      void annotation​(java.lang.String type, int numMemberValuePairs)
      Writes annotation.
      void annotationValue()
      Writes tag and annotation_value in element_value.
      void arrayValue​(int numValues)
      Writes tag and array_value in element_value.
      void classInfoIndex​(int index)
      Writes tag and class_info_index in element_value.
      void classInfoIndex​(java.lang.String name)
      Writes tag and class_info_index in element_value.
      void close()
      Closes the output stream.
      void constValueIndex​(boolean value)
      Writes tag and const_value_index in element_value.
      void constValueIndex​(byte value)
      Writes tag and const_value_index in element_value.
      void constValueIndex​(char value)
      Writes tag and const_value_index in element_value.
      void constValueIndex​(double value)
      Writes tag and const_value_index in element_value.
      void constValueIndex​(float value)
      Writes tag and const_value_index in element_value.
      void constValueIndex​(int value)
      Writes tag and const_value_index in element_value.
      void constValueIndex​(int tag, int index)
      Writes tag and const_value_index in element_value.
      void constValueIndex​(long value)
      Writes tag and const_value_index in element_value.
      void constValueIndex​(short value)
      Writes tag and const_value_index in element_value.
      void constValueIndex​(java.lang.String value)
      Writes tag and const_value_index in element_value.
      void enumConstValue​(int typeNameIndex, int constNameIndex)
      Writes tag and enum_const_value in element_value.
      void enumConstValue​(java.lang.String typeName, java.lang.String constName)
      Writes tag and enum_const_value in element_value.
      ConstPool getConstPool()
      Obtains the constant pool given to the constructor.
      void memberValuePair​(int memberNameIndex)
      Writes an element of a element_value_pairs array in annotation.
      void memberValuePair​(java.lang.String memberName)
      Writes an element of a element_value_pairs array in annotation.
      void numAnnotations​(int num)
      Writes num_annotations in Runtime(In)VisibleAnnotations_attribute.
      void numParameters​(int num)
      Writes num_parameters in Runtime(In)VisibleParameterAnnotations_attribute.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • AnnotationsWriter

        public AnnotationsWriter​(java.io.OutputStream os,
                                 ConstPool cp)
        Constructs with the given output stream.
        Parameters:
        os - the output stream.
        cp - the constant pool.
    • Method Detail

      • getConstPool

        public ConstPool getConstPool()
        Obtains the constant pool given to the constructor.
      • close

        public void close()
                   throws java.io.IOException
        Closes the output stream.
        Throws:
        java.io.IOException
      • numParameters

        public void numParameters​(int num)
                           throws java.io.IOException
        Writes num_parameters in Runtime(In)VisibleParameterAnnotations_attribute. This method must be followed by num calls to numAnnotations().
        Throws:
        java.io.IOException
      • numAnnotations

        public void numAnnotations​(int num)
                            throws java.io.IOException
        Writes num_annotations in Runtime(In)VisibleAnnotations_attribute. This method must be followed by num calls to annotation().
        Throws:
        java.io.IOException
      • annotation

        public void annotation​(java.lang.String type,
                               int numMemberValuePairs)
                        throws java.io.IOException
        Writes annotation. This method must be followed by numMemberValuePairs calls to memberValuePair().
        Parameters:
        type - the annotation interface name.
        numMemberValuePairs - num_element_value_pairs in annotation.
        Throws:
        java.io.IOException
      • annotation

        public void annotation​(int typeIndex,
                               int numMemberValuePairs)
                        throws java.io.IOException
        Writes annotation. This method must be followed by numMemberValuePairs calls to memberValuePair().
        Parameters:
        typeIndex - type_index in annotation.
        numMemberValuePairs - num_element_value_pairs in annotation.
        Throws:
        java.io.IOException
      • memberValuePair

        public void memberValuePair​(java.lang.String memberName)
                             throws java.io.IOException
        Writes an element of a element_value_pairs array in annotation. This method must be followed by a call to constValueIndex(), enumConstValue(), etc.
        Parameters:
        memberName - the element name.
        Throws:
        java.io.IOException
      • memberValuePair

        public void memberValuePair​(int memberNameIndex)
                             throws java.io.IOException
        Writes an element of a element_value_pairs array in annotation. This method must be followed by a call to constValueIndex(), enumConstValue(), etc.
        Parameters:
        memberNameIndex - element_name_index in element_value_pairs array.
        Throws:
        java.io.IOException
      • constValueIndex

        public void constValueIndex​(boolean value)
                             throws java.io.IOException
        Writes tag and const_value_index in element_value.
        Parameters:
        value - the constant value.
        Throws:
        java.io.IOException
      • constValueIndex

        public void constValueIndex​(byte value)
                             throws java.io.IOException
        Writes tag and const_value_index in element_value.
        Parameters:
        value - the constant value.
        Throws:
        java.io.IOException
      • constValueIndex

        public void constValueIndex​(char value)
                             throws java.io.IOException
        Writes tag and const_value_index in element_value.
        Parameters:
        value - the constant value.
        Throws:
        java.io.IOException
      • constValueIndex

        public void constValueIndex​(short value)
                             throws java.io.IOException
        Writes tag and const_value_index in element_value.
        Parameters:
        value - the constant value.
        Throws:
        java.io.IOException
      • constValueIndex

        public void constValueIndex​(int value)
                             throws java.io.IOException
        Writes tag and const_value_index in element_value.
        Parameters:
        value - the constant value.
        Throws:
        java.io.IOException
      • constValueIndex

        public void constValueIndex​(long value)
                             throws java.io.IOException
        Writes tag and const_value_index in element_value.
        Parameters:
        value - the constant value.
        Throws:
        java.io.IOException
      • constValueIndex

        public void constValueIndex​(float value)
                             throws java.io.IOException
        Writes tag and const_value_index in element_value.
        Parameters:
        value - the constant value.
        Throws:
        java.io.IOException
      • constValueIndex

        public void constValueIndex​(double value)
                             throws java.io.IOException
        Writes tag and const_value_index in element_value.
        Parameters:
        value - the constant value.
        Throws:
        java.io.IOException
      • constValueIndex

        public void constValueIndex​(java.lang.String value)
                             throws java.io.IOException
        Writes tag and const_value_index in element_value.
        Parameters:
        value - the constant value.
        Throws:
        java.io.IOException
      • constValueIndex

        public void constValueIndex​(int tag,
                                    int index)
                             throws java.io.IOException
        Writes tag and const_value_index in element_value.
        Parameters:
        tag - tag in element_value.
        index - const_value_index in element_value.
        Throws:
        java.io.IOException
      • enumConstValue

        public void enumConstValue​(java.lang.String typeName,
                                   java.lang.String constName)
                            throws java.io.IOException
        Writes tag and enum_const_value in element_value.
        Parameters:
        typeName - the type name of the enum constant.
        constName - the simple name of the enum constant.
        Throws:
        java.io.IOException
      • enumConstValue

        public void enumConstValue​(int typeNameIndex,
                                   int constNameIndex)
                            throws java.io.IOException
        Writes tag and enum_const_value in element_value.
        Parameters:
        typeNameIndex - type_name_index in element_value.
        constNameIndex - const_name_index in element_value.
        Throws:
        java.io.IOException
      • classInfoIndex

        public void classInfoIndex​(java.lang.String name)
                            throws java.io.IOException
        Writes tag and class_info_index in element_value.
        Parameters:
        name - the class name.
        Throws:
        java.io.IOException
      • classInfoIndex

        public void classInfoIndex​(int index)
                            throws java.io.IOException
        Writes tag and class_info_index in element_value.
        Parameters:
        index - class_info_index
        Throws:
        java.io.IOException
      • annotationValue

        public void annotationValue()
                             throws java.io.IOException
        Writes tag and annotation_value in element_value. This method must be followed by a call to annotation().
        Throws:
        java.io.IOException
      • arrayValue

        public void arrayValue​(int numValues)
                        throws java.io.IOException
        Writes tag and array_value in element_value. This method must be followed by numValues calls to constValueIndex(), enumConstValue(), etc.
        Parameters:
        numValues - num_values in array_value.
        Throws:
        java.io.IOException