attribute_info attributes [attributes_count];
}
В
Тут:
В· access_flags - комбінація бітових прапорів, визначають права доступу та деякі інші характеристик працівників ики поля:
Ім'я прапора
Значення
Сенс
ACC_PUBLIC
0x0001
Поле оголошено як public
ACC_PRIVATE
0x0002
Поле оголошено як private
ACC_PROTECTED
0x0004
Поле оголошено як protected
ACC_STATIC
0x0008
Поле є статичним
ACC_FINAL
0x0010
Поле оголошено як final і не може бути змінено після початкової ініціалізації
ACC_VOLATILE
0x0040
Поле оголошено як volatile
ACC_TRANSIENT
0x0080
Поле оголошено як transient - не збережуться при серіалізациі
В· name_index - індекс строкової константи-імені поля в Constant Pool;
В· descriptor_index - індекс строковой константи-дескриптора поля (описує тип) в Constant Pool;
В· attributes_count - число атрибутів поля;
В· attributes - атрибути поля. До полям можуть бути застосовані стандартні атрибути Deprecated (див. вище), Synthetic (Поле створене компілятором і не оголошено явно в початковому тексті) і ConstantValue (инициализирующее значення для статичної поля).
Формат структури method_info
Структура method_info має наступний формат:
method_info {
u2 access_flags;
< p> u2 name_index;
u2 descriptor_index;
u2 attributes_count;
attribute_info attributes [attributes_count];
}
Тут:
В· access_flags - бітові прапори, що визначають права доступу і деякі додаткові властивості методу:
Flag Name
Value
Interpretation
ACC_PUBLIC
0x0001
Метод оголошений як public
ACC_PRIVATE
0x0002
Метод оголошений як private
ACC_PROTECTED
0x0004
Метод оголошений як protected
ACC_STATIC
0x0008
Метод є статичним
ACC_FINAL
0x0010
Метод є фінальним і не може бути заміщений
ACC_SYNCHRONIZED
0x0020
Метод оголошений як synchronized
ACC_NATIVE
0x0100
Метод є В«ріднимВ» і містить код, безпосередньо виконувати фізичні процесором
ACC_ABSTRACT
0x0400
Метод є абстрактним
ACC_STRICT
0x0800
Встановлює В«суворийВ» режим роботи з речовими числами (тільки в Java 2).
В· name_index, descriptor_index, attributes_count - аналогічно field_info;
В· attributes - атрибути методу. Методи можуть мати такі стандартні атрибути:
o Deprecated, Synthetic - аналогічно відповідним атрибутам полів;
o Exceptions - опис винятків, які може генерувати метод. Потрібно відзначити, що обов'язкове опис винятків не є необхідною вимогою для коректного виконання;
o Code - власне кажучи, байт-код методу.
Формат атрибута Code.
Атрибут Code має наступну структуру:
В
Code _ attribute {
u2 attribute_name_index;
u4 attribute_length;
u2 max_stack;
u2 max_locals ;
u4 code_length;
u1 code [code_length ];
u2 exception_table_length;
{u2 start_pc ;
u2 end_pc;
u2 handler_pc;
u2 catch_type; <...