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