Java-код:
public void foo(Object[] args) {}
дизассемблированная подпись из файла класса:
public void foo(java.lang.Object[]);
Code:
0: return
Java-код:
public void foo(Object... args) {}
дизассемблированная подпись из файла класса:
public void foo(java.lang.Object...);
Code:
0: return
Таким образом, файл класса сохраняет разницу.
Возможно, исходная строка типа параметра (т.е. Object [] / Object ...) сохранена в файле класса, и javap просто показывает их.
Или, может быть, двоичная сигнатура в файле классов различна, что означает, что varargs - это не просто синтаксический сахар.
Что является правдой?