Действительно ли выгодно сделать финал закрытых методов? Это улучшило бы производительность?
Я думаю, что "частный финал" не имеет большого количества смысла, потому что закрытый метод не может быть переопределен. Таким образом, поиск метода должен быть эффективным как тогда, когда с помощью финала.
И было бы лучше сделать частный вспомогательный метод статичным (когда возможный)?
Что является лучшим для использования?
private Result doSomething()
private final Result doSomething()
private static Result doSomething()
private static final Result doSomething()
Добавление final
к методам не улучшает производительность с помощью Sun HotSpot. В случае добавления final
, HotSpot заметит, что метод никогда не переопределяется, поэтому относитесь к нему так же.
В Java private
методы не являются виртуальными. Их нельзя переопределить, даже используя вложенные классы, где они могут быть доступны подклассам. Например, методы, которые инструктор должен вызывать privates, отличаются от методов, используемых для не-приватов. Добавление final
в частные методы не делает никаких шансов.
Как всегда, такие микрооптимизации не стоят того, чтобы тратить на них время.
.Сделав метод окончательным, мы не сможем его переопределить. Так как методы Private не могут быть доступны вне класса. Нет смысла делать метод окончательным и закрытым. Это может повлиять на производительность.
private static Result doSomething()
, если в этом методе не используются никакие переменные экземпляров.
В любом случае, делать их окончательными не имеет смысла, так как аксессуар является приватным.
Нет. Не будет. Частные методы не наследуются. Так что сделать их окончательными - спорный вопрос. Также обратите внимание, что вы не должны делать методы окончательными для производительности. JVM умнее. Такая оптимизация не так уж и полезна. Следует делать вещи финальными, приватными, защищенными, приватными и т.д., основываясь на семантике и дизайне.
Пометка частного метода как конечного ничего не меняет, но может сбить с толку младших разработчиков, глядящих на ваш код. Оставайтесь простыми.
Разработчик IBM работает: Теория и практика Java: это ваш окончательный ответ? Статья старая, но полезная об использовании ключевого слова final
в Java: