Руководство пользователя ASM 4.0 описывает байт-код для конструктора publi c по умолчанию:
ALOAD 0
INVOKESPECIAL java/lang/Object.<init> ()V
RETURN
Я хотел скопировать это, создал свой собственный класс с конструктором publi c по умолчанию, и декомпилировал это. Хотя сгенерированный байт-код для конструктора выглядит следующим образом:
L0
LINENUMBER 3 L0
ALOAD 0
INVOKESPECIAL java/lang/Object.<init> ()V
RETURN
L1
LOCALVARIABLE this Lcom/example/EmptyFixture; L0 L1 0
MAXSTACK = 1
MAXLOCALS = 1
Насколько я понимаю, все, что вложено в метку L0
, которая соответствует руководству пользователя, выполняется. После RETURN
имеется недостижимый код, вложенный под меткой L1
, которая является просто объявлением локальной переменной this
с типом класса.
Для чего нужно включать это объявление переменной ? Для чего он используется, тем более что он выглядит недоступным?