Class AnnotationsWriter

  • Direct Known Subclasses:
    TypeAnnotationsWriter

    public class AnnotationsWriter
    extends 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 Detail

      • AnnotationsWriter

        public AnnotationsWriter​(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.
      • numParameters

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

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

        public void annotation​(String type,
                               int numMemberValuePairs)
                        throws 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:
        IOException
      • annotation

        public void annotation​(int typeIndex,
                               int numMemberValuePairs)
                        throws 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:
        IOException
      • memberValuePair

        public void memberValuePair​(String memberName)
                             throws 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:
        IOException
      • memberValuePair

        public void memberValuePair​(int memberNameIndex)
                             throws 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:
        IOException
      • constValueIndex

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

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

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

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

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

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

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

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

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

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

        public void enumConstValue​(String typeName,
                                   String constName)
                            throws 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:
        IOException
      • enumConstValue

        public void enumConstValue​(int typeNameIndex,
                                   int constNameIndex)
                            throws 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:
        IOException
      • classInfoIndex

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

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

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

        public void arrayValue​(int numValues)
                        throws 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:
        IOException