tgoop.com/Java_Iibrary/1821
Last Update:
Многие начинают с Java и используют static
повсюду.
Кажется, что это «упрощает код», например при вызове методов, но на самом деле static
— это довольно точное понятие, которое стоит хорошо понимать.
В Java static
означает, что что-то принадлежит классу, а не экземпляру. То есть:
- Статическое поле существует в памяти только один раз и шарится между всеми объектами этого класса.
- Статический метод можно вызвать без создания экземпляра.
- Жизненный цикл статических сущностей начинается при загрузке класса в память и заканчивается только при завершении JVM.
Для чего используется?
- Для объявления констант (public static final
), которые никогда не меняются.
- Для утилитарных методов (например, Collections.sort()
), которые не зависят от внутреннего состояния объекта.
Где начинаются проблемы?
- Когда используешь static
для переменных, которые на самом деле должны быть частью состояния объекта.
- Когда превращаешь его в «глобальную зависимость», и код становится тяжело тестировать, плюс возникает сильная связность. static
— это не шорткат. Это способ сказать:
«это уникально и шарится по всему приложению».