Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java1_2013_2014 / java24.pptx
Скачиваний:
144
Добавлен:
16.04.2015
Размер:
223.47 Кб
Скачать

Пример: Структура поля

field_info {

 

 

u2 access_flags;

//модификатор доступа

u2 name_index;

//имя

u2 descriptor_index;

//описание

u2 attributes_count;

//атрибуты

attribute_info attributes[attributes_count];

}

• name_index и descriptor_index являются ссылками на соответствующие элементы пула констант.

(С) Сафонов В.О. 2013

Атрибуты

Содержат некоторую информацию о классе, поле или методе.

Делятся на несколько типов в зависимости от того, что они описывают (исключения, тело методов, локальные переменные и др.).

Могут иметь сложное строение (атрибут, описывающий тело метода).

Могут игнорироваться виртуальной машиной.

(С)Сафонов В.О. 2013

Атрибут Code

Code_attribute {

u2 attribute_name_index;

u4 attribute_length;

u2 max_stack; //определяет размер фрейма стека

u2 max_locals; //определяет размер локальных переменных

u4 code_length;

u1 code[code_length]; // здесь записаны инструкции Java-машины 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];

}

(С) Сафонов В.О. 2013

Ограничения

Длина кода метода ограничена 65536 символами.

Тело метода не может быть пустым.

Каждый переход по метке должен происходить в теле данного метода.

Нельзя создать массив с количеством измерений более 255.

(С) Сафонов В.О. 2013

Пример class-файла(1/2)

public class SuperClass{ int superElement;

}

class MyClass extends SuperClass{ int [ ]mass = new int[10];

int el;

public MyClass(int i){ el = i;

}

public int get(){ return el;

}

public void set(int sign){ el = sign;

}

public void count(){ el++;

}

}

(С) Сафонов В.О. 2013

Пример class-файла(2/2)

Кюєѕ 1 mass [I el I <init> (I)V Code LineNumberTable LocalVariableTable this Lsimple1/MyClass; i get ()I set sign count ()V SourceFile SuperClass.java simple1/MyClass simple1/SuperClass

R*· *јµ *µ ±

/*ґ ¬

>*µ ±

9

*Yґ `µ ± ! "

(С) Сафонов В.О. 2013

Литература

1.The Java Virtual Machine Specification. Second Edition

2.Bill Venners. The Java Virtual Machinе

3.http://java.sun.com/javase/technologies/hotspot/in

dex.jsp

(С) Сафонов В.О. 2013

Соседние файлы в папке java1_2013_2014