Какие знаешь ограничения у статических методов

«Какие знаешь ограничения у статических методов» — вопрос из категории Java, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Статические методы в Java/Kotlin имеют несколько ограничений:

  1. Нет доступа к нестатическим членам класса - могут работать только с другими статическими полями/методами.
class Test {
    val nonStatic = 1
    companion object {
        fun staticMethod() {
            println(nonStatic) // Ошибка: нельзя обратиться к нестатическому полю
        }
    }
}
  1. Не могут быть абстрактными - должны иметь реализацию.

  2. Не участвуют в полиморфизме - переопределение невозможно (в Kotlin open для companion object не работает).

  3. Не имеют ссылки this - нельзя обращаться к текущему экземпляру класса.

  4. Сложность тестирования - усложняют mock-ирование в unit-тестах.

Используйте их для утилитарных функций, не требующих состояния объекта.