public final class ConstantValueAttribute_info extends Attribute_info
Field_info structures. A ConstantValue
attribute represents the value of a constant field that must be (explicitly or
implicitly) static; that is, the ACC_STATIC bit in the flags item of the
Field_info structure must be set. The field is not required to be final. There
can be no more than one ConstantValue attribute in the attributes table of a
given Field_info structure. The constant field represented by the Field_info
structure is assigned the value referenced by its ConstantValue attribute as
part of its initialization.The ConstantValue attribute has the format
ConstantValue_attribute {
u2 attribute_name_index;
u4 attribute_length;
u2 constantvalue_index;
}
The value of the constantvalue_index item must be a valid index into the constant
pool table. The constant pool entry at that index must give the constant value
represented by this attribute.The constant pool entry must be of a type appropriate to the field, as shown below:
| Field Type | Entry Type |
|---|---|
| long | CONSTANT_Long |
| float | CONSTANT_Float |
| double | CONSTANT_Double |
| int, short, char, byte, boolean | CONSTANT_Integer |
| java.lang.String | CONSTANT_String |
| Modifier and Type | Field and Description |
|---|---|
private static boolean |
DEBUG |
int |
m_value_index |
ATTRIBUTE_BRIDGE, ATTRIBUTE_CODE, ATTRIBUTE_CONSTANT_VALUE, ATTRIBUTE_EXCEPTIONS, ATTRIBUTE_INNERCLASSES, ATTRIBUTE_LINE_NUMBER_TABLE, ATTRIBUTE_SOURCEFILE, ATTRIBUTE_SYNTHETIC, m_attribute_length, m_name_index| Constructor and Description |
|---|
ConstantValueAttribute_info(int attribute_name_index,
int value_index) |
ConstantValueAttribute_info(int attribute_name_index,
long attribute_length,
UDataInputStream bytes) |
| Modifier and Type | Method and Description |
|---|---|
void |
accept(IAttributeVisitor visitor,
java.lang.Object ctx) |
java.lang.Object |
clone()
Performs a deep copy.
|
CONSTANT_literal_info |
getValue(ClassDef cls) |
long |
length()
Returns the total length of this attribute when converted to
.class format [including the 6-byte header]
|
java.lang.String |
toString() |
void |
writeInClassFormat(UDataOutputStream out) |
getName, new_Attribute_infopublic int m_value_index
private static final boolean DEBUG
public ConstantValueAttribute_info(int attribute_name_index,
int value_index)
ConstantValueAttribute_info(int attribute_name_index,
long attribute_length,
UDataInputStream bytes)
throws java.io.IOException
java.io.IOExceptionpublic CONSTANT_literal_info getValue(ClassDef cls)
public long length()
Attribute_infolength in class Attribute_infopublic void accept(IAttributeVisitor visitor, java.lang.Object ctx)
accept in class Attribute_infopublic java.lang.String toString()
toString in class Attribute_infopublic java.lang.Object clone()
clone in class Attribute_infopublic void writeInClassFormat(UDataOutputStream out) throws java.io.IOException
writeInClassFormat in interface IClassFormatOutputwriteInClassFormat in class Attribute_infojava.io.IOException