Reflection is slower due to dynamic type resolution and security checks.
When using Method.invoke(), the JVM performs additional operations like resolving method types and checking permissions, which aren't required with direct calls. This adds overhead, making reflection slower. In a loop, this can significantly degrade performance.
Additional Notes
Why is performance impacted by using Method.invoke()?