org.objectweb.asm.attrs
Class EnclosingMethodAttribute
java.lang.Object
org.objectweb.asm.Attribute
org.objectweb.asm.attrs.EnclosingMethodAttribute
- Direct Known Subclasses:
- ASMEnclosingMethodAttribute
public class EnclosingMethodAttribute
- extends Attribute
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_index;
u4 attribute_length;
u2 class_index
u2 method_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 four.
- class_index
- The value of the class_index item must be a valid index into the
constant_pool table. The constant_pool entry at that index must be a
CONSTANT_Class_info structure representing the
innermost class that encloses the declaration of the current class.
- method_index
- If the current class is not immediately enclosed by a method or
constructor, then the value of the method_index item must be zero.
Otherwise, the value of the method_index item must be a valid
index into the constant_pool table. The constant_pool entry at that
index must be a CONSTANT_NameAndType_info structure
representing a the name and type of a method in the class
referenced by the class_index attribute above. It is the
responsibility of the Java compiler to ensure that the method
identified via the method_index is indeed the closest lexically
enclosing method of the class that contains this EnclosingMethod
attribute.
- Author:
- Eugene Kuleshov
owner
public String owner
name
public String name
desc
public String desc
EnclosingMethodAttribute
public EnclosingMethodAttribute()
EnclosingMethodAttribute
public EnclosingMethodAttribute(String owner,
String name,
String desc)
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.
- Overrides:
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.
- Overrides:
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.
toString
public String toString()
- Overrides:
toString
in class Object