Gymterview
junior

Module Import Declarations и упрощённый импорт

Module Import Declarations (финализировано в Java 25) позволяют импортировать все пакеты модуля одной строкой import module, вместо множества отдельных import-ов.

Пример
// Импорт всего модуля
import module java.base;    // все пакеты java.base (java.util, java.io, java.time, ...)
import module java.sql;     // java.sql, javax.sql

// Вместо:
import java.util.*;
import java.util.stream.*;
import java.io.*;
import java.time.*;
import java.math.*;
// ... и т.д.
Пример: программа с import module и implicit main
// Программа с import module
import module java.base;

public class Demo {
    public static void main(String[] args) {
        var numbers = List.of(1, 2, 3, 4, 5);
        var sum = numbers.stream()
            .filter(n -> n % 2 == 0)
            .mapToInt(Integer::intValue)
            .sum();
        System.out.println("Sum of evens: " + sum);

        var today = LocalDate.now(); // тоже доступен
    }
}

// Без какого-либо main() boilerplate (Implicitly Declared Classes, Java 22+)
void main() {
    println("Hello, World!");
    // java.base импортирован автоматически
    // println() доступен без System.out
}

Частые ошибки

  • Конфликты имён — import module java.base и import module java.desktop оба содержат List; нужен явный import java.util.List
  • В production-коде — import module может усложнить читаемость для других разработчиков

Как используется в 2026

  • Для скриптов, обучения, quick prototyping
  • Production-код обычно использует явные импорты (IDE поддерживает автоматически)

На собеседовании: скажите, что import module упрощает обучение и скрипты, но в production рекомендуются явные импорты. Упомяните проблему конфликтов имён и implicit main для простых программ.