Class Attribute

    • Field Detail

      • name_index

        protected int name_index
      • length

        protected int length
      • tag

        protected byte tag
    • Constructor Detail

      • Attribute

        protected Attribute​(byte tag,
                            int name_index,
                            int length,
                            ConstantPool constant_pool)
    • Method Detail

      • accept

        public abstract void accept​(Visitor v)
        Called by objects that are traversing the nodes of the tree implicitely defined by the contents of a Java class. I.e., the hierarchy of methods, fields, attributes, etc. spawns a tree of objects.
        Specified by:
        accept in interface Node
        Parameters:
        v - Visitor object
      • dump

        public void dump​(java.io.DataOutputStream file)
                  throws java.io.IOException
        Dump attribute to file stream in binary format.
        Parameters:
        file - Output file stream
        Throws:
        java.io.IOException
      • addAttributeReader

        public static void addAttributeReader​(java.lang.String name,
                                              AttributeReader r)
        Add an Attribute reader capable of parsing (user-defined) attributes named "name". You should not add readers for the standard attributes such as "LineNumberTable", because those are handled internally.
        Parameters:
        name - the name of the attribute as stored in the class file
        r - the reader object
      • removeAttributeReader

        public static void removeAttributeReader​(java.lang.String name)
        Remove attribute reader
        Parameters:
        name - the name of the attribute as stored in the class file
      • getName

        public java.lang.String getName()
        Returns:
        Name of attribute
      • getLength

        public final int getLength()
        Returns:
        Length of attribute field in bytes.
      • setLength

        public final void setLength​(int length)
        Parameters:
        length - length in bytes.
      • setNameIndex

        public final void setNameIndex​(int name_index)
        Parameters:
        name_index - of attribute.
      • getNameIndex

        public final int getNameIndex()
        Returns:
        Name index in constant pool of attribute name.
      • getTag

        public final byte getTag()
        Returns:
        Tag of attribute, i.e., its type. Value may not be altered, thus there is no setTag() method.
      • getConstantPool

        public final ConstantPool getConstantPool()
        Returns:
        Constant pool used by this object.
        See Also:
        ConstantPool
      • setConstantPool

        public final void setConstantPool​(ConstantPool constant_pool)
        Parameters:
        constant_pool - Constant pool to be used for this object.
        See Also:
        ConstantPool
      • clone

        public Attribute clone()
        Use copy() if you want to have a deep copy(), i.e., with all references copied correctly.
        Overrides:
        clone in class java.lang.Object
        Returns:
        shallow copy of this attribute
      • copy

        public abstract Attribute copy​(ConstantPool _constant_pool)
        Returns:
        deep copy of this attribute
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
        Returns:
        attribute name.