Интерпретация классов байт-кода Java - PullRequest
0 голосов
/ 28 апреля 2018

Я понимаю основные инструкции по байт-коду Java и как поля ссылаются из пула констант Но я не могу разобраться в различиях между этими двумя строками:

java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;  

В чем конкретная разница?
Единственным изменением является часть между круглыми скобками, указывающая массив строк в первом и целочисленный примитив во втором.
Первый, кажется, вызывается только один раз в начале, тогда как второй вызывается при каждой новой записи.

EDIT:
Это актуальный исходный код. Я использую это, чтобы красиво напечатать дерево.

System.out.println(String.format("%" + this.indent + "s", "") +  "├──── " + nodeToString(currNode));

где nodeToString - метод, возвращающий тип String.

Спасибо за просветление

1 Ответ

0 голосов
/ 28 апреля 2018

Извините, мне просто нужна была ночь отдыха.
Поле в скобках должно указывать тип добавляемого операнда.
"%" является строкой, а идент является целым числом.
Спасибо @Angel Koh, ты сделал мне точный вопрос, он решил все это.
Для кого интересна вот ссылка, описывающая 2 разные версии StringBuilder:
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/StringBuilder.java

...