Был вопрос, поэтому, и это меня смутило
getDeclaredConstructor(new Class[]{String.class,Integer.class})
но эта вещь также работает
getDeclaredConstructor(String.class,Integer.class)
то почему мы используем вышеуказанный?
Вы можете использовать оба варианта, и поведение будет одинаковым. Думаю, это просто для удобства.
http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html
Три периода после окончательного типа параметра указывают, что последний аргумент может быть передан как массив или как последовательность аргументов. Варгары могут использоваться только в конечной позиции аргумента.