.class файл кода метод скрытый там

Класс Java может быть собран в байт-код, а затем помещают на виртуальных машинах.

Формат файла класса

Файл класса представляет собой набор из 8-битового двоичного потока в единицах байтов, основанных на соответствующих элементов данных последовательно расположенных близко нажмите в направлении назад от передней панели. Мы можем видеть, как огромная структура файла класса, все сведения в этом классе все здесь, как JSON.

ClassFile {
    u4             magic;
    u2             minor_version;
    u2             major_version;
    u2             constant_pool_count;//常量池
    cp_info        constant_pool[constant_pool_count-1];
    u2             access_flags;
    u2             this_class;
    u2             super_class;
    u2             interfaces_count;
    u2             interfaces[interfaces_count];
    u2             fields_count;
    field_info     fields[fields_count];
    u2             methods_count;
    method_info    methods[methods_count];
    u2             attributes_count;
    attribute_info attributes[attributes_count];
}

method_info methods[methods_count];Это означает , что есть массив метода, этот тип информации во всех методах , содержащегося внутри массива, каждый из которых является массивом , method_infoкоторый представляет собой структуру, которая содержит всю информацию о методе.
Это method_infoопределение структуры псевдокода

method_info {
    u2             access_flags;
    u2             name_index;//方法名
    u2             descriptor_index;
    u2             attributes_count;
    attribute_info attributes[attributes_count];
}

атрибуты включают в себя атрибуты различных аспектов методы, который также кодовые атрибуты. Хотя, как представляется, массив практически каждое свойство не должен такой же размера, так что атрибуты должна быть структурой, которая содержит много атрибутов.

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;
    } exception_table[exception_table_length];
    u2 attributes_count;
    attribute_info attributes[attributes_count];
}

Код метода тело двоичный код внутри массива.
Здесь двоичный код является Java байт - код может быть понят как независимая от платформы языка ассемблера. Виртуальная машина отвечает за составление этого переведенный в реальный машинный язык.

постоянный класс бассейн

Класс используется для хранения констант, используемых в строке, имя класса, имена интерфейсов, имена методов и имена экземпляров, как члены.

Справка:
https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.7.3
https://zh.wikipedia.org/wiki/Java%E5%AD % 97% E8% 8A% 82 % Е7% A0% 81

Опубликовано 124 оригинальные статьи · вона похвала 8 · просмотров 50000 +

рекомендация

отblog.csdn.net/yrk0556/article/details/104080579