Previous: MethodSpecification Attribute, Up: Method Attributes
The ParameterTable attribute represents the BML related information about the method parameters. The structure of the attribute is as follows:
ParameterTable_attribute { u2 attribute_name_index; u4 attribute_length; u2 parameters_count; { u2 name_index; u2 access_flags; u4 BML_flags; u2 index; } parameters[parameters_count]; }
The meaning of the fields is as follows:
CONSTANT_Utf8_info
element
ACC_FINAL
. All other flags
must be cleared.
BML_NON_NULL
, BML_NULLABLE
, BML_PEER
, BML_REP
,
BML_READONLY
.
All other flags must be cleared. Only one of BML_NON_NULL
, BML_NULLABLE
can be set. Only one
of BML_PEER
, BML_REP
, BML_READONLY
can be set.
Note that for methods where the Code attribute (see Code Attribute) contains a LocalVariableTable attribute (see LocalVariableTable Attribute) the parameter names can already be stored in this table. In this case the two names must be equal. However, for methods without the Code attribute (because they are declared in an interface, abstract or native) the parameter's name is only stored in this attribute.
The index field in each parameter description must correspond to the index by which this parameter is referenced in the code (if it is present) and BML expressions in the method specification and other formulas in the method's code. Note that if there are long integer or double float parameters in the list, the value of the index does not have to be equal to the position of the parameter in the method's signature.
The order of parameters is not specified and not all of them must be described in the table, but any parameter must be described at most once.