Подтвердить что ты не робот

Сделать частные методы окончательными?

Полезно ли сделать частные методы окончательными? Улучшит ли производительность?

Я думаю, что "частный финал" не имеет большого смысла, потому что частный метод нельзя переопределить. Таким образом, поиск метода должен быть эффективным, как при использовании final.

И было бы лучше сделать статичный (если возможно) приватный вспомогательный метод?

Что лучше всего использовать?

  private Result doSomething()
  private final Result doSomething()
  private static Result doSomething()
  private static final Result doSomething()
4b9b3361

Ответ 1

Добавление final к методам не улучшает производительность с помощью Sun HotSpot. Там, где можно добавить final, HotSpot заметит, что метод никогда не переопределяется и поэтому относиться к нему одинаково.

В Java private методы не являются виртуальными. Вы не можете переопределить их, даже используя вложенные классы, где они могут быть доступны для подклассов. Например, методы, которые инструктаж вызывает рядовых, отличаются от тех, которые используются для не-рядовых. Добавление final в частные методы не делает никаких шансов.

Как всегда, такие микро-оптимизации не стоит тратить время.

Ответ 2

private static Result doSomething(), если этот метод не использует никаких переменных экземпляра. В любом случае сделать их окончательными не имеет смысла, поскольку аксессор закрыт.

Ответ 3

Нет. Я не буду. частные методы не наследуются. Поэтому сделать их окончательными - спорный вопрос. Также обратите внимание, что вы не должны делать методы окончательными для производительности. JVM умнее этого. Такая оптимизация не очень полезна. Вы должны сделать вещи окончательными, частными, частными, защищенными, частными и т.д. На основе семантики и дизайна.

Ответ 4

Маркировка частного метода как окончательного ничего не меняет, но может помешать младшим разработчикам, которые смотрят ваш код. Держите его простым.

Ответ 6

Выполнив метод final, мы не сможем переопределить этот метод. Поскольку доступ к частным методам недоступен вне класса. Нет никакого смысла сделать метод окончательным и приватным. Это может повлиять на производительность.