## org.apache.bcel.classfile
Class Attribute

    java.lang.Object
      |
      +--org.apache.bcel.classfile.Attribute

All Implemented Interfaces:
  java.lang.Cloneable, Node, java.io.Serializable

Direct Known Subclasses:
  Code, ConstantValue, Deprecated, ExceptionTable, InnerClasses, LineNumberTable, LocalVariableTable, PMGClass, Signature, SourceFile, StackMap, Synthetic, Unknown

public abstract class Attribute
extends java.lang.Object
implements java.lang.Cloneable, Node, java.io.Serializable

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.

Version:
  $Id: Attribute.java,v 1.8 2002/07/11 19:39:04 mdahm Exp $
Author:
  M. Dahm
See Also:
  `ConstantValue`, `SourceFile`, `Code`, `Unknown`, `ExceptionTable`, `LineNumberTable`, `LocalVariableTable`, `InnerClasses`, `Synthetic`, `Deprecated`, `Signature`, Serialized Form

Field Summary
`protected ConstantPool` `constant_pool`
`protected int` `length`
`protected int` `name_index`
`protected byte` `tag`

Constructor Summary
`protected` `Attribute(byte tag, int name_index, int length, ConstantPool constant_pool)`

Method Summary
`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.
`static void` `addAttributeReader(java.lang.String name, AttributeReader r)` Add an Attribute reader capable of parsing (user-defined) attributes named "name".
`java.lang.Object` `clone()` Use copy() if you want to have a deep copy(), i.e., with all references copied correctly.
`abstract Attribute` `copy(ConstantPool constant_pool)`
`void` `dump(java.io.DataOutputStream file)` Dump attribute to file stream in binary format.
`ConstantPool` `getConstantPool()`
`int` `getLength()`
`int` `getNameIndex()`
`byte` `getTag()`
`static Attribute` `readAttribute(java.io.DataInputStream file, ConstantPool constant_pool)`
`static void` `removeAttributeReader(java.lang.String name)` Remove attribute reader
`void` `setConstantPool(ConstantPool constant_pool)`
`void` `setLength(int length)`
`void` `setNameIndex(int name_index)`
`java.lang.String` `toString()`

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### name_index

    protected int name_index

### length

    protected int length

### tag

    protected byte tag

### constant_pool

    protected ConstantPool constant_pool

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

### readAttribute

    public static final Attribute readAttribute(java.io.DataInputStream file,
                                                ConstantPool constant_pool)
                                         throws java.io.IOException,
                                                ClassFormatException

    `java.io.IOException`
    `ClassFormatException`

### getLength

    public final int getLength()

  Returns:
    Length of attribute field in bytes.

### setLength

    public final void setLength(int length)

### 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 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 constant_pool)

  Returns:
    deep copy of this attribute

### toString

    public java.lang.String toString()

  Overrides:
    `toString` in class `java.lang.Object`
  Returns:
    attribute name.

Copyright © 2002-2003 Apache Software Foundation. All Rights Reserved.