Class Attribute

java.lang.Object
org.apache.bcel.classfile.Attribute
All Implemented Interfaces:
Cloneable, Node
Direct Known Subclasses:
AnnotationDefault, Annotations, BootstrapMethods, Code, ConstantValue, Deprecated, EnclosingMethod, ExceptionTable, InnerClasses, LineNumberTable, LocalVariableTable, LocalVariableTypeTable, MethodParameters, Module, ModuleMainClass, ModulePackages, NestHost, NestMembers, ParameterAnnotations, PMGClass, Record, Signature, SourceFile, StackMap, Synthetic, Unknown

public abstract class Attribute extends Object implements Cloneable, Node
Abstract super class for Attribute objects. Currently the ConstantValue, SourceFile, Code, Exceptiontable, LineNumberTable, LocalVariableTable, InnerClasses and Synthetic attributes are supported. The Unknown attribute stands for non-standard-attributes.
 attribute_info {
   u2 attribute_name_index;
   u4 attribute_length;
   u1 info[attribute_length];
 }
 
See Also:
  • Field Details Link icon

    • EMPTY_ARRAY Link icon

      public static final Attribute[] EMPTY_ARRAY
      Empty array.
      Since:
      6.6.0
    • name_index Link icon

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

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

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

      Deprecated.
      (since 6.0) will be made private; do not access directly, use getter/setter
  • Constructor Details Link icon

    • Attribute Link icon

      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 Details Link icon

    • addAttributeReader Link icon

      @Deprecated public static void addAttributeReader(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 Link icon

      public static void addAttributeReader(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 Link icon

      protected static void println(String msg)
    • readAttribute Link icon

      public static Attribute readAttribute(DataInput dataInput, ConstantPool constantPool) throws 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:
      IOException - if an I/O error occurs.
      Since:
      6.0
      See Also:
    • readAttribute Link icon

      public static Attribute readAttribute(DataInputStream dataInputStream, ConstantPool constantPool) throws 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:
      IOException - if an I/O error occurs.
      See Also:
    • removeAttributeReader Link icon

      public static void removeAttributeReader(String name)
      Remove attribute reader
      Parameters:
      name - the name of the attribute as stored in the class file
    • accept Link icon

      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 Link icon

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

      public abstract Attribute copy(ConstantPool constantPool)
      Parameters:
      constantPool - constant pool to save.
      Returns:
      deep copy of this attribute.
    • dump Link icon

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

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

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

      public String getName()
      Returns:
      Name of attribute
      Since:
      6.0
    • getNameIndex Link icon

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

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

      public final void setConstantPool(ConstantPool constantPool)
      Parameters:
      constantPool - Constant pool to be used for this object.
      See Also:
    • setLength Link icon

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

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

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