Java 23 predstavila možnosť importu modulov. Java organizuje kód do balíčkov, ktoré je potom možné spájať do modulov. Tieto moduly môžeme najnovšie tiež importovať pomocou import
príkazu.
Novinku popisuje dokument JEP 476: Module Import Declarations (Preview).
V súčasnosti sú automaticky importované triedy a rozhrania balíčka java.lang
. Importom modulov automaticky vnesieme všetky triedy a rozhrania balíčkov, ktoré sa v danom module nachádzajú.
package com.zetcode; import module java.base; //import java.time.LocalDateTime; //import java.time.format.DateTimeFormatter; //import java.time.format.FormatStyle; //import java.util.Random; import java.time.LocalDateTime; public class Main { public static void main(String[] args) { System.out.println("Java 23"); System.out.println("JEP 476: Module Import Declarations (Preview)"); LocalDateTime now = LocalDateTime.now(); var dtf1 = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT); var dtf3 = DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG); var dtf4 = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL); System.out.println(dtf1.format(now)); System.out.println(dtf3.format(now)); System.out.println(dtf4.format(now)); System.out.println(new Random().nextInt()); } }
Prípadné nejednoznačnosti sa vyriešia explicitným importom. Čo sa týka jednoduchých príkladov v zjednodušenom móde (implicitne deklarovaná hlavná trieda a main metóda), tam sa automaticky importuje modul java.base
.
Niečo podobné pred časom zaviedol aj .NET 6 vo forme implicitných importov.
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> </Project>
Jazyk C# používa na import typov kľúčové slovo using
. Implicitné importy sú automaticky pridané do nového projektu vytvoreného v .NET.