org.apache.bcel.classfile

Class Attribute

public abstract class Attribute extends Object implements Cloneable, Node, 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.

See Also: ConstantValue SourceFile Code Unknown ExceptionTable LineNumberTable LocalVariableTable InnerClasses Synthetic Deprecated Signature

Field Summary
protected ConstantPoolconstant_pool
protected intlength
protected intname_index
protected bytetag
Constructor Summary
protected Attribute(byte tag, int name_index, int length, ConstantPool constant_pool)
Method Summary
abstract voidaccept(Visitor v)
Called by objects that are traversing the nodes of the tree implicitely defined by the contents of a Java class.
static voidaddAttributeReader(String name, AttributeReader r)
Add an Attribute reader capable of parsing (user-defined) attributes named "name".
Objectclone()
Use copy() if you want to have a deep copy(), i.e., with all references copied correctly.
abstract Attributecopy(ConstantPool _constant_pool)
voiddump(DataOutputStream file)
Dump attribute to file stream in binary format.
ConstantPoolgetConstantPool()
intgetLength()
intgetNameIndex()
bytegetTag()
static AttributereadAttribute(DataInputStream file, ConstantPool constant_pool)
static voidremoveAttributeReader(String name)
Remove attribute reader
voidsetConstantPool(ConstantPool constant_pool)
voidsetLength(int length)
voidsetNameIndex(int name_index)
StringtoString()

Field Detail

constant_pool

protected ConstantPool constant_pool

length

protected int length

name_index

protected int name_index

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.

Parameters: v Visitor object

addAttributeReader

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

clone

public Object clone()
Use copy() if you want to have a deep copy(), i.e., with all references copied correctly.

Returns: shallow copy of this attribute

copy

public abstract Attribute copy(ConstantPool _constant_pool)

Returns: deep copy of this attribute

dump

public void dump(DataOutputStream file)
Dump attribute to file stream in binary format.

Parameters: file Output file stream

Throws: IOException

getConstantPool

public final ConstantPool getConstantPool()

Returns: Constant pool used by this object.

See Also: ConstantPool

getLength

public final int getLength()

Returns: Length of attribute field in bytes.

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.

readAttribute

public static final Attribute readAttribute(DataInputStream file, ConstantPool constant_pool)

removeAttributeReader

public static void removeAttributeReader(String name)
Remove attribute reader

Parameters: name the name of the attribute as stored in the class file

setConstantPool

public final void setConstantPool(ConstantPool constant_pool)

Parameters: constant_pool Constant pool to be used for this object.

See Also: ConstantPool

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.

toString

public String toString()

Returns: attribute name.