Сложность заключается в понимании того, что современные JVM выполняют агрессивную оптимизацию при компиляции байтового кода на основе знаний, доступных во время выполнения.
Если, например, данный метод не переопределен в подклассе, его можно рассматривать точно так же, как и конечный метод, позволяя JVM встроить копию своего кода в вызывающий метод вместо явного вызова метода , (Если условия меняются, эти классы затем просто считаются новыми и, следовательно, перекомпилируются позже на основе новых условий).
Это означает, что get / set для атрибутов bean (где значения просто хранятся и извлекаются, а не вычисляются) очень дешевы, и вы должны выполнять вызовы каждый раз и ожидать, что JVM обнаружит возможные оптимизации и применит их. 1005 *