В Java 25 появится долгожданная фича: импорт модулей. Теперь можно будет одним импортом подключать все пакеты, которые экспортирует модуль. Это сильно упростит работу с большими библиотеками, особенно в прототипах и обучении.
В чем проблема?
Например, чтобы работать с потоками, коллекциями и функциями, раньше приходилось писать кучу импортов:
import java.util.*;
import java.util.function.*;
import java.util.stream.*;
Теперь можно будет написать:
import module java.base;
И все нужные классы из
java.util, java.util.stream и других будут доступны сразу.Зачем это нужно?
– Быстрее подключать модули целиком без перечисления всех пакетов.
– Удобно для прототипов, скриптов и JShell.
– Упрощает жизнь новичкам — не нужно вспоминать, где в иерархии пакетов живет
List или Stream.Пример:
import module java.sql;
public class Demo {
public static void main(String[] args) throws Exception {
Connection conn = DriverManager.getConnection("jdbc:h2:mem:");
Statement stmt = conn.createStatement();
stmt.execute("create table test(id int)");
System.out.println("Таблица создана");
}
}
Благодаря
import module java.sql; доступны все классы из java.sql и javax.sql сразу.⚙️ Как это работает?
import module M; — подключает все публичные классы и интерфейсы из экспортируемых пакетов модуля M.Также подключаются пакеты из модулей, от которых
M зависит транзитивно.⚡ Важно:
Это работает даже в обычных (не модульных) проектах.
Если в разных модулях встречаются классы с одинаковыми именами, компилятор сообщит об ошибке. В этом случае можно уточнить импорт:
import java.sql.Date; // Уточнение, какой именно класс Date использовать
Java постоянно расширяется, и стандартные библиотеки становятся все объемнее. import module — это способ сделать работу с ними проще и быстрее, без потери совместимости.
Что думаете о новой фиче? Предлагаем обсудить комментариях👇
