org.objectweb.asm.attrs
Class EnclosingMethodAttribute
java.lang.Object
org.objectweb.asm.Attribute
org.objectweb.asm.attrs.EnclosingMethodAttribute
- All Implemented Interfaces:
- Dumpable
- public class EnclosingMethodAttribute
- extends Attribute
- implements Dumpable
The EnclosingMethod attribute is an optional fixed-length attribute
in the attributes table of the ClassFile structure. A class must
have an EnclosingMethod attribute if and only if it is a local
class or an anonymous class. A class may have no more than one
EnclosingMethod attribute.
The EnclosingMethod attribute has the following format:
EnclosingMethod_attribute {
u2 attribute_name;
u4 attribute_length;
u2 method_descriptor_index;
}
The items of the EnclosingMethod_attribute structure are as follows:
- attribute_name_index
- The value of the attribute_name_index item must be a valid index
into the constant_pool table. The constant_pool entry at that index
must be a CONSTANT_Utf8_info structure representing the string
"EnclosingMethod".
- attribute_length
- The value of the attribute_length item is zero.
- method_descriptor_index
- The value of the method_descriptor_index item must be a valid
index into the constant_pool table. The constant_pool entry at that
index must be a CONSTANT_Utf8_info structure representing a valid
method descriptor (JLS 4.4.3). It is the responsibility of the
Java compiler to ensure that the method identified via the
method_descriptor_index is indeed the closest lexically enclosing
method of the class that contains this EnclosingMethod attribute.
- Author:
- Eugene Kuleshov
Method Summary |
void |
dump(StringBuffer buf,
String varName,
Map labelNames)
Dump attribute data into ASM code. |
protected Attribute |
read(ClassReader cr,
int off,
int len,
char[] buf,
int codeOff,
Label[] labels)
Reads a type attribute. |
String |
toString()
|
protected ByteVector |
write(ClassWriter cw,
byte[] code,
int len,
int maxStack,
int maxLocals)
Returns the byte array form of this attribute. |
methodDescriptor
public String methodDescriptor
EnclosingMethodAttribute
public EnclosingMethodAttribute()
EnclosingMethodAttribute
public EnclosingMethodAttribute(String methodDescriptor)
read
protected Attribute read(ClassReader cr,
int off,
int len,
char[] buf,
int codeOff,
Label[] labels)
- Description copied from class:
Attribute
- Reads a
type
attribute. This method must return a new
Attribute
object, of type type
, corresponding to the
len bytes starting at the given offset, in the given class reader.
- Specified by:
read
in class Attribute
- Parameters:
cr
- the class that contains the attribute to be read.off
- index of the first byte of the attribute's content in cr.b
. The 6 attribute header bytes, containing the type
and the length of the attribute, are not taken into account here.len
- the length of the attribute's content.buf
- buffer to be used to call readUTF8
,
readClass
or readConst
.codeOff
- index of the first byte of code's attribute content in
cr.b
, or -1 if the attribute to be read is not a
code attribute. The 6 attribute header bytes, containing the type and
the length of the attribute, are not taken into account here.labels
- the labels of the method's code, or null if the
attribute to be read is not a code attribute.
- Returns:
- a new
Attribute
object corresponding to the given
bytes.
write
protected ByteVector write(ClassWriter cw,
byte[] code,
int len,
int maxStack,
int maxLocals)
- Description copied from class:
Attribute
- Returns the byte array form of this attribute.
- Specified by:
write
in class Attribute
- Parameters:
cw
- the class to which this attribute must be added. This parameter
can be used to add to the constant pool of this class the items that
corresponds to this attribute.code
- the bytecode of the method corresponding to this code
attribute, or null if this attribute is not a code
attributes.len
- the length of the bytecode of the method corresponding to this
code attribute, or null if this attribute is not a code
attribute.maxStack
- the maximum stack size of the method corresponding to this
code attribute, or -1 if this attribute is not a code attribute.maxLocals
- the maximum number of local variables of the method
corresponding to this code attribute, or -1 if this attribute is not
a code attribute.
- Returns:
- the byte array form of this attribute.
dump
public void dump(StringBuffer buf,
String varName,
Map labelNames)
- Description copied from interface:
Dumpable
- Dump attribute data into ASM code.
- Specified by:
dump
in interface Dumpable
- Parameters:
buf
- A buffer used for printing java code.varName
- name of the variable in a printed code used to store
attribute instance.labelNames
- map of label instances to their names.
toString
public String toString()