Критерии для статических методов Java? - PullRequest
3 голосов
/ 11 января 2012

Кто-то сказал мне:

Если вы используете Eclipse и не видите синих слов (то есть переменных-членов) в своих методах, то эти методы должны быть статическими, если параметры (если они есть) являются примитивными типами, или (в случае ссылок на объекты) являются неизменяемыми и / или поточно-ориентированными.

Существуют ли другие критерии, которые разработчик Java должен учитывать при принятии решения о том, должен ли метод экземпляра действительно быть статическим методом?

Ответы [ 4 ]

11 голосов
/ 11 января 2012

Проще говоря, если это чистый "помощник / функция", который не изменяет внутреннее состояние объекта, это хороший кандидат для статического метода.

6 голосов
/ 11 января 2012

... если вы не планируете создавать подклассы и переопределять метод.

, пока параметры (если они есть) являются примитивными типами или (в случае ссылок на объекты)неизменяемый и / или потокобезопасный.

Я не понимаю, почему это актуально.Любые соображения безопасности потоков одинаковы, независимо от того, делаете ли вы метод статичным или нет.Статический метод с только неизменяемыми параметрами (который также не мешает статическим полям класса) является поточно-ориентированным.Если параметры не являются неизменяемыми, и метод изменяет их, и это становится не поточно-ориентированным, то создание этого метода экземпляра не поможет вообще.

1 голос
/ 11 января 2012

Если вам не нужен экземпляр объекта для вызова метода, он должен быть статическим.То есть: если вы работаете только с параметрами и без элементов объекта.Обычно они собираются в служебных или вспомогательных классах, которые никогда не создаются (защищаются путем объявления частного конструктора по умолчанию).

ps: относительно "синих слов": вы всегда должны использовать this. для доступа к переменным-членам и не рассчитывать на вашу IDE, так как код становится совершенно нечитаемым, когда вы используете простой просмотрщик / редактор.

0 голосов
/ 11 января 2012

Любая функция, которую вы планируете использовать глобально для всех ваших экземпляров, может быть сделана статической

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...