Модификатор доступа в поле не имеет значения для скорости, но вызывает метод доступа .
Однако разница неотлично, и, вероятно, уменьшится после повторного вызова из-за оптимизации компилятора JIT.Это зависит от вашей ситуации, но я не нашел случая, когда проблемы производительности оправдывали бы устранение доступа.Пусть правильные принципы проектирования будут определять ваши решения.
Один хороший принцип проектирования, который поможет производительности в этом случае, - это запретить наследование, если вы не знаете, что оно необходимо, и не приняли меры для его поддержки.В частности, объявление класса final
(или, по крайней мере, метода доступа) обеспечит более быструю диспетчеризацию метода и может также послужить подсказкой для JITC для более агрессивного встраивания.
Сохранение окончательных методов доступа также позволяет компилятору выполнять встроенные вызовы метода доступа.Если поле является закрытым, вызовы метода доступа из класса могут быть встроенными (и в хорошем дизайне это наиболее распространенный случай), тогда как доступное для пакета поле может быть встроено во всем пакете и т. Д.