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 для простых программ.