Когда вы вызываете метод, вам нужно знать, если вы делаете это с допустимыми аргументами, с действительным объектом, каков тип возвращаемого значения и какой байт-код должен выполняться. Когда точный метод указан в коде, java может быстро разобраться с этим и перейти к фактическому выполнению метода.
Когда вы делаете это с отражением, вы знаете намного меньше. Поскольку вызываемый метод не был указан в коде, ничего из этого не может быть сделано заранее, и виртуальная машина должна делать во время выполнения вещи, которые намного сложнее и интенсивнее процессора.
Полиморфные вызовы методов могут находиться где-то между этими двумя крайностями. Вы не знаете, какой метод вызывать до времени выполнения, но, по крайней мере, можете быть уверены в имени метода, аргументах и типе возвращаемого значения. Чем больше вы знаете о том, какой метод выполнять, тем больше Java может избежать во время выполнения.
Это доказывает, что отражение медленнее , но не то, что оно действительно "медленное". Если вам нужны рефлексивные или полиморфные методы, используйте их и сохраните суждение о том, что является «медленным», на будущее.