Class Attribute

    • Field Detail

      • name_index

        @Deprecated
        protected int name_index
        Deprecated.
        (since 6.0) will be made private; do not access directly, use getter/setter
      • length

        @Deprecated
        protected int length
        Deprecated.
        (since 6.0) (since 6.0) will be made private; do not access directly, use getter/setter
      • tag

        @Deprecated
        protected byte tag
        Deprecated.
        (since 6.0) will be made private; do not access directly, use getter/setter
      • constant_pool

        @Deprecated
        protected ConstantPool constant_pool
        Deprecated.
        (since 6.0) will be made private; do not access directly, use getter/setter
    • Constructor Detail

      • Attribute

        protected Attribute​(byte tag,
                            int nameIndex,
                            int length,
                            ConstantPool constantPool)
        Constructs an instance.
         attribute_info {
           u2 attribute_name_index;
           u4 attribute_length;
           u1 info[attribute_length];
         }
         
        Parameters:
        tag - tag.
        nameIndex - u2 name index.
        length - u4 length.
        constantPool - constant pool.
    • Method Detail

      • addAttributeReader

        @Deprecated
        public static void addAttributeReader​(java.lang.String name,
                                              AttributeReader attributeReader)
        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
        attributeReader - the reader object
      • addAttributeReader

        public static void addAttributeReader​(java.lang.String name,
                                              UnknownAttributeReader unknownAttributeReader)
        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
        unknownAttributeReader - the reader object
      • println

        protected static void println​(java.lang.String msg)
      • readAttribute

        public static Attribute readAttribute​(java.io.DataInput dataInput,
                                              ConstantPool constantPool)
                                       throws java.io.IOException
        Class method reads one attribute from the input data stream. This method must not be accessible from the outside. It is called by the Field and Method constructor methods.
        Parameters:
        dataInput - Input stream
        constantPool - Array of constants
        Returns:
        Attribute
        Throws:
        java.io.IOException - if an I/O error occurs.
        Since:
        6.0
        See Also:
        Field, Method
      • readAttribute

        public static Attribute readAttribute​(java.io.DataInputStream dataInputStream,
                                              ConstantPool constantPool)
                                       throws java.io.IOException
        Class method reads one attribute from the input data stream. This method must not be accessible from the outside. It is called by the Field and Method constructor methods.
        Parameters:
        dataInputStream - Input stream
        constantPool - Array of constants
        Returns:
        Attribute
        Throws:
        java.io.IOException - if an I/O error occurs.
        See Also:
        Field, Method
      • 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
      • accept

        public abstract void accept​(Visitor v)
        Called by objects that are traversing the nodes of the tree implicitly 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
      • clone

        public java.lang.Object 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 constantPool)
        Parameters:
        constantPool - constant pool to save.
        Returns:
        deep copy of this attribute.
      • dump

        public void dump​(java.io.DataOutputStream file)
                  throws java.io.IOException
        Dumps attribute to file stream in binary format.
        Parameters:
        file - Output file stream
        Throws:
        java.io.IOException - if an I/O error occurs.
      • getLength

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

        public java.lang.String getName()
        Returns:
        Name of attribute
        Since:
        6.0
      • 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.
      • setLength

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

        public final void setNameIndex​(int nameIndex)
        Parameters:
        nameIndex - of attribute.
      • toString

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