Сделать финал закрытых методов?

Действительно ли выгодно сделать финал закрытых методов? Это улучшило бы производительность?

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

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

Что является лучшим для использования?

  private Result doSomething()
  private final Result doSomething()
  private static Result doSomething()
  private static final Result doSomething()
48
задан deamon 31 December 2009 в 08:01
поделиться

6 ответов

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

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

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

.
66
ответ дан 26 November 2019 в 18:40
поделиться

Сделав метод окончательным, мы не сможем его переопределить. Так как методы Private не могут быть доступны вне класса. Нет смысла делать метод окончательным и закрытым. Это может повлиять на производительность.

-1
ответ дан 26 November 2019 в 18:40
поделиться

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

21
ответ дан 26 November 2019 в 18:40
поделиться

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

8
ответ дан 26 November 2019 в 18:40
поделиться

Пометка частного метода как конечного ничего не меняет, но может сбить с толку младших разработчиков, глядящих на ваш код. Оставайтесь простыми.

7
ответ дан 26 November 2019 в 18:40
поделиться

Разработчик IBM работает: Теория и практика Java: это ваш окончательный ответ? Статья старая, но полезная об использовании ключевого слова final в Java:

4
ответ дан 26 November 2019 в 18:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: