Ответ
В Java нет extensions в том виде, как в Kotlin, но аналогичную функциональность можно реализовать через:
- Статические методы в утилитных классах
public final class StringUtils {
public static boolean isNullOrEmpty(String str) {
return str == null || str.isEmpty();
}
}
// Использование:
StringUtils.isNullOrEmpty(text);
- Декораторы – оборачивание объекта в другой класс
public class EnhancedList<T> {
private final List<T> list;
public EnhancedList(List<T> list) {
this.list = list;
}
public T second() {
return list.get(1);
}
}
- Интерфейсы с default-методами (Java 8+)
public interface ListExtensions<T> extends List<T> {
default T second() {
return get(1);
}
}
Основные отличия от Kotlin extensions:
- Не синтаксический сахар (явный вызов методов)
- Нет доступа к private-полям оригинального класса
- Требуют явного создания оберток/наследования