Java code:
public void foo(Object[] args) {}
disassembled signature from class file:
public void foo(java.lang.Object[]);
Code:
0: return
Java code:
public void foo(Object... args) {}
disassembled signature from class file:
public void foo(java.lang.Object...);
Code:
0: return
So the class file keeps the difference.
Maybe the original parameter type string (i.e. Object[]/Object...) is stored in the class file and javap just show them.
Or maybe the binary signature in the class file is differenct which means that varargs is not just syntactic sugar.
Which is true?