Как выглядят Extenstions в Java

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

Ответ

В Java нет встроенной поддержки extensions (как в Kotlin), но их можно имитировать с помощью утилитных классов со статическими методами.

public final class StringExtensions {
    public static boolean isEmail(String str) {
        return str != null && str.matches("[^@]+@[^@]+\.[^@]+");
    }
}

Использование:

boolean isValid = StringExtensions.isEmail("test@example.com");

Особенности:

  • Методы должны быть static
  • Первый параметр — объект, для которого вызывается метод
  • Класс-утилита обычно final с приватным конструктором
  • В отличие от Kotlin, синтаксис менее удобный (StringExtensions.method(str) вместо str.method())

Альтернатива — использование проектов Lombok или Manifold, добавляющих функциональность extensions в Java.