Package org.apache.bcel.classfile
Class Attribute
- java.lang.Object
-
- org.apache.bcel.classfile.Attribute
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,Node
- Direct Known Subclasses:
AbstractLocalVariableTable
,Code
,ConstantValue
,Deprecated
,ExceptionTable
,InnerClasses
,LineNumberTable
,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.
-
-
Field Summary
Fields Modifier and Type Field Description protected ConstantPool
constant_pool
protected int
length
protected int
name_index
protected byte
tag
-
Constructor Summary
Constructors Modifier Constructor Description protected
Attribute(byte tag, int name_index, int length, ConstantPool constant_pool)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description 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 readervoid
setConstantPool(ConstantPool constant_pool)
void
setLength(int length)
void
setNameIndex(int name_index)
java.lang.String
toString()
-
-
-
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.
-
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 filer
- 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
- Throws:
java.io.IOException
ClassFormatException
-
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 java.lang.Object clone()
Use copy() if you want to have a deep copy(), i.e., with all references copied correctly.- Overrides:
clone
in classjava.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 classjava.lang.Object
- Returns:
- attribute name.
-
-