{"id":42007,"date":"2024-12-02T10:08:01","date_gmt":"2024-12-02T09:08:01","guid":{"rendered":"https:\/\/www.happycoders.eu\/?p=42007"},"modified":"2025-06-12T09:04:15","modified_gmt":"2025-06-12T07:04:15","slug":"module-importieren","status":"publish","type":"post","link":"https:\/\/www.happycoders.eu\/de\/java\/module-importieren\/","title":{"rendered":"Module importieren in Java: Module Import Declarations"},"content":{"rendered":"\n<p>In diesem Artikel erf\u00e4hrst du:<\/p>\n\n\n\n<ul class=\"wp-block-list hc-checked-list\">\n<li>Wie k\u00f6nnen mit <code>import module<\/code> ganze Java-Module importiert werden?<\/li>\n\n\n\n<li>Wie k\u00f6nnen dabei Mehrdeutigkeiten aufgel\u00f6st werden?<\/li>\n\n\n\n<li>Was sind transitive Modul-Importe, und wie funktionieren sie?<\/li>\n\n\n\n<li>Welche Module werden standardm\u00e4\u00dfig importiert?<\/li>\n<\/ul>\n\n\n\n<p>Beginnen wir mit einem ganz kurzen R\u00fcckblick...<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"java-imports\">Java Imports<\/h2>\n\n\n\n<p>Seit Java 1.0 k\u00f6nnen wir mit dem <code>import<\/code>-Statement einzelne Klassen (\u201esingle-type-import declaration\u201c) oder ganze Pakete (\u201etype-import-on-demand declaration\u201c) importieren, z. B. wie folgt:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.util.*;\n<span class=\"hljs-keyword\">import<\/span> java.util.stream.Stream;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Die Klassen des Pakets <code>java.lang<\/code> werden seit jeher automatisch importert. Deshalb m\u00fcssen wir f\u00fcr Klassen wie <code>Object<\/code>, <code>String<\/code>, <code>Integer<\/code>, <code>Exception<\/code>, usw. keine <code>import<\/code>-Statements angeben.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"module-import-declarations\">Module Import Declarations<\/h2>\n\n\n\n<p>Mit <code>import module<\/code> k\u00f6nnen wir ab <a href=\"https:\/\/www.happycoders.eu\/de\/java\/java-25-features\/#module-import-declarations-jep-511\">Java 25<\/a> (und in <a href=\"https:\/\/www.happycoders.eu\/de\/java\/java-23-features\/#module-import-declarations-preview-jep-476\">Java 23<\/a> und <a href=\"https:\/\/www.happycoders.eu\/de\/java\/java-24-features\/#Module_Import_Declarations_Second_Preview_JEP_494\">Java 24<\/a> im Preview-Modus) auch ganze Module importieren. Dadurch k\u00f6nnen wir alle Klassen, die sich innerhalb eines Moduls befinden und von diesem exportiert werden, direkt verwenden.<\/p>\n\n\n\n<p>Im folgenden Beispiel importieren wir das Modul <code>java.base<\/code> und k\u00f6nnen dadurch die Klassen <code>List<\/code>, <code>Map<\/code>, <code>Stream<\/code> und <code>Collectors<\/code> verwenden, ohne sie einzeln oder paketweise importieren zu m\u00fcssen (<code>String<\/code> und <code>Character<\/code> liegen im Paket <code>java.lang<\/code> und wurden daher schon immer automatisch importiert).<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-keyword\">module<\/span> java.base;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ModuleImportTest<\/span> <\/span>{\n\n  <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> Map&lt;Character, List&lt;String&gt;&gt; groupByFirstLetter(String... values) {\n    <span class=\"hljs-keyword\">return<\/span> Stream.of(values).collect(\n        Collectors.groupingBy(s -&gt; Character.toUpperCase(s.charAt(<span class=\"hljs-number\">0<\/span>))));\n  }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Wenn du dieses Code-Beispiel in der Datei <em>ModuleImportTest.java<\/em> speicherst, kannst du die Klasse im aktuellen Java 24 wie folgt kompilieren (in Java 23 musst du den Parameter <code>--source 24<\/code> durch <code>--source 23<\/code> ersetzen; in Java 25 k\u00f6nnen <code>--enable-preview<\/code> und <code>--source<\/code> wegfallen):<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">javac --enable-preview --source 24 ModuleImport.java<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Um <code>import module<\/code> zu verwenden ist es \u2013 wie im vorangegangenen Beispiel gesehen \u2013 nicht n\u00f6tig, dass sich die importierende Klasse selbst in einem Modul befindet.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.happycoders.eu\/de\/java\/main-methode\/#compact-source-files-and-instance-main-methods\">Compact Source Files<\/a> (zuvor bekannt als \u201eImplizit deklarierte Klassen\u201c und \u201esimple source files\u201c) und JShell importieren automatisch das <code>java.base<\/code>-Modul, d.&nbsp;h. Klassen wie <code>List<\/code> und <code>Map<\/code> kannst du dort ohne explizite Imports verwenden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"mehrdeutige-klassennamen\">Mehrdeutige Klassennamen<\/h2>\n\n\n\n<p>Manchmal kommt es vor, dass ein Klassenname nicht eindeutig ist. In folgendem Beispiel gibt es eine <code>List<\/code>-Klasse sowohl im importierten Modul <code>java.base<\/code> (<code>java.util.List<\/code>) als auch im Modul <code>java.desktop<\/code> (<code>java.awt.List<\/code>):<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-keyword\">module<\/span> java.base;     <span class=\"hljs-comment\">\/\/ \u2190 Contains java.util.List<\/span>\n<span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-keyword\">module<\/span> java.desktop;  <span class=\"hljs-comment\">\/\/ \u2190 Contains java.awt.List<\/span>\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Ambiguous<\/span> <\/span>{\n  List list;                 <span class=\"hljs-comment\">\/\/ \u2190 Ambiguous reference to List<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Wenn du die Datei unter <em>Ambiguous.java<\/em> abspeicherst und dann wie folgt mit Java 24 kompilierst:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">javac --enable-preview --source 24 Ambiguous.java<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>... oder wie folgt mit Java 23:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">javac --enable-preview --source 23 Ambiguous.java<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>... dann bricht der Compiler mit folgender Fehlermeldung ab:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">Ambiguous.java:5: error: reference to List is ambiguous\n  List list;\n  ^\n  both class java.awt.List in java.awt and interface java.util.List in java.util match<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Das bedeutet, dass der Compiler nicht wei\u00df, welche der beiden <code>List<\/code>-Klassen gemeint ist.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"mehrdeutige-klassennamen-aufloesen\">Mehrdeutige Klassennamen aufl\u00f6sen<\/h3>\n\n\n\n<p>Nehmen wir an, du m\u00f6chtest <code>java.util.List<\/code> verwenden (und nicht <code>java.awt.List<\/code>). Dann hast du zwei M\u00f6glichkeiten, um diese Mehrdeutigkeit aufzul\u00f6sen:<\/p>\n\n\n\n<p>Option 1: Du importierst zus\u00e4tzlich die Klasse <code>java.util.List<\/code> direkt:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-keyword\">module<\/span> java.base;\n<span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-keyword\">module<\/span> java.desktop;\n\n<span class=\"hljs-keyword\">import<\/span> java.util.List;  <span class=\"hljs-comment\">\/\/ \u2190 Ambiguity resolved by single-type-import declaration<\/span>\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Ambiguous<\/span> <\/span>{\n  List list;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Option 2: Du importierst zus\u00e4tzlich das Paket <code>java.util<\/code> (in der Java-Terminologie hei\u00dft das \u00fcbrigens nicht \u201ePackage Import\u201c sondern \u201eType-Import-on-Demand Declaration\u201c):<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-keyword\">module<\/span> java.base;\n<span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-keyword\">module<\/span> java.desktop;\n\n<span class=\"hljs-keyword\">import<\/span> java.util.*;  <span class=\"hljs-comment\">\/\/ \u2190 Ambiguity resolved by type-import-on-demand declaration<\/span>\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Ambiguous<\/span> <\/span>{\n  List list;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Die zweite Option ist erst <a href=\"https:\/\/www.happycoders.eu\/de\/java\/java-24-features\/#module-import-declarations-second-preview-jep-494\">seit Java 24<\/a> verf\u00fcgbar. Wenn du das letzte Beispiel mit Java 23 kompilierst, f\u00fchrt dies ebenfalls zur Fehlermeldung <em>\u201ereference to List is ambiguous\u201c<\/em>.<\/p>\n\n\n\n<div class=\"wp-block-uagb-info-box uagb-block-b273f2fa uagb-infobox__content-wrap  uagb-infobox-icon-left uagb-infobox-left uagb-infobox-stacked-mobile uagb-infobox-image-valign-top hc-infobox\"><div class=\"uagb-ifb-icon-wrap\"><svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\"><path d=\"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z\"><\/path><\/svg><\/div><div class=\"uagb-ifb-content\"><div class=\"uagb-ifb-title-wrap\"><\/div><p class=\"uagb-ifb-desc\">Mehrdeutige Klassennamen kann es \u00fcbrigens auch \u2013 wenn auch selten \u2013 geben, wenn du nur <em>ein<\/em> Modul importierst. Beispielsweise enth\u00e4lt das Modul <code>java.desktop<\/code> sowohl das Interface <code>javax.swing.text.Element<\/code> als auch die Klasse <code>javax.swing.text.html.parser.Element<\/code>.<\/p><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"transitive-modul-importe\">Transitive Modul-Importe<\/h2>\n\n\n\n<p>Wenn ein mit <code>import module<\/code> importiertes Modul ein drittes Modul <em>transitiv<\/em> importiert, dann sind auch alle Klassen der exportierten Pakete dieses dritten Moduls ohne explizite Imports nutzbar.<\/p>\n\n\n\n<p>Ich m\u00f6chte dir das am Beispiel der Module <code>java.sql<\/code> und <code>java.xml<\/code> erkl\u00e4ren.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Das Modul <code>java.sql<\/code> hat (u. a.) eine transitive Abh\u00e4ngigkeiten auf das Modul <code>java.xml<\/code>.<\/li>\n\n\n\n<li>Das Modul <code>java.sql<\/code> exportiert die Pakete <code>java.sql<\/code> und <code>javax.sql<\/code>.<\/li>\n\n\n\n<li>Das Modul <code>java.xml<\/code> exportiert die Pakete <code>javax.xml<\/code> und <code>org.w3c.dom<\/code>, jeweils mit zahlreichen Unterpaketen.<\/li>\n<\/ul>\n\n\n\n<p>Die folgende Grafik zeigt die Module, ihre Abh\u00e4ngigkeiten und die exportierten Pakete:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full_800\"><img decoding=\"async\" width=\"800\" height=\"229\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-import-declarations-800x229.png\" alt=\"java module import declarations\" class=\"wp-image-42082\" srcset=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-import-declarations-800x229.png 800w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-import-declarations-224x64.png 224w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-import-declarations-336x96.png 336w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-import-declarations-504x144.png 504w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-import-declarations-672x192.png 672w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-import-declarations-400x115.png 400w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-import-declarations-600x172.png 600w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-import-declarations-944x270.png 944w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-import-declarations-1200x344.png 1200w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-import-declarations.png 1600w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n<\/div>\n\n\n<p>In der Modul-Deklarationen des <code>java.sql<\/code>-Moduls sieht das so aus:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">module<\/span> java.sql {\n  . . .\n  <span class=\"hljs-keyword\">requires<\/span> transitive java.xml;\n\n  <span class=\"hljs-keyword\">exports<\/span> java.sql;\n  <span class=\"hljs-keyword\">exports<\/span> javax.sql;\n  . . .\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Und in der Modul-Deklaration von <code>java.xml<\/code> so:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">module<\/span> java.xml {\n  <span class=\"hljs-keyword\">exports<\/span> javax.xml;\n  <span class=\"hljs-keyword\">exports<\/span> javax.xml.parsers;\n  . . .\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Wenn wir nun ein Programm schreiben, das das Modul <code>java.sql<\/code> importiert, dann ben\u00f6tigen wir beispielsweise keine expliziten Imports f\u00fcr die Klassen <code>SAXParserFactory<\/code> und <code>SAXParser<\/code> aus dem Paket <code>javax.xml.parsers<\/code> des <code>java.xml<\/code>-Moduls \u2013 und auch keinen expliziten Import dieses Moduls:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-keyword\">module<\/span> java.sql;  <span class=\"hljs-comment\">\/\/ \u2190 Transitively imports module java.xml<\/span>\n                         <span class=\"hljs-comment\">\/\/   and its exported packages, e.g. javax.xml.parsers<\/span>\n. . .\nSAXParserFactory factory = SAXParserFactory.newInstance();\nSAXParser saxParser = factory.newSAXParser();\n. . .<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Denn aus der transitiven Abh\u00e4ngigkeit von Modul <code>java.sql<\/code> auf Modul <code>java.xml<\/code> und der Tatsache, dass <code>java.xml<\/code> das Paket <code>javax.xml.parsers<\/code> exportiert, folgt, dass das Programm auch ohne explizite Imports auf alle Klassen des Pakets <code>javax.xml.parsers<\/code> zugreifen kann.<\/p>\n\n\n\n<div class=\"wp-block-uagb-info-box uagb-block-dd12bf54 uagb-infobox__content-wrap  uagb-infobox-icon-left uagb-infobox-left uagb-infobox-stacked-mobile uagb-infobox-image-valign-top hc-infobox\"><div class=\"uagb-ifb-icon-wrap\"><svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\"><path d=\"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z\"><\/path><\/svg><\/div><div class=\"uagb-ifb-content\"><div class=\"uagb-ifb-title-wrap\"><\/div><p class=\"uagb-ifb-desc\">Beachte, dass in Java 23 ein Import des Moduls <code>java.se<\/code> (ein Agregator-Modul mit Abh\u00e4ngigkeiten auf alle Module der Java Standard Edition \u201eJava SE\u201c) nicht die Klassen des <code>java.base<\/code>-Moduls verf\u00fcgbar macht. Dies wurde in Java 24 ge\u00e4ndert.<\/p><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"automatischer-java-base-import-in-jshell\">Automatischer java.base-Import in JShell<\/h2>\n\n\n\n<p>Sobald <em>Module Import Declarations<\/em> Produktionsreife erlangt haben wird JShell automatisch das Modul <code>java.base<\/code> importieren. Aktuell kannst du dies bereits mit <code>--enable-preview<\/code> aktivieren:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">$ jshell --enable-preview\n|  Welcome to JShell -- Version 24\n|  For an introduction type: \/help intro\n\njshell&gt; \/imports\n|    import java.base<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Wenn du JShell aktuell ohne <code>--enable-preview<\/code> startest und das <code>\/imports<\/code>-Kommando eingibst, wirst du hingegen die folgenden zehn standardm\u00e4\u00dfige Paket-Importe sehen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">$ jshell --enable-preview\n|  Welcome to JShell -- Version 24\n|  For an introduction type: \/help intro\n\njshell&gt; \/imports\n|    import java.io.*\n|    import java.math.*\n|    import java.net.*\n|    import java.nio.file.*\n|    import java.util.*\n|    import java.util.concurrent.*\n|    import java.util.function.*\n|    import java.util.prefs.*\n|    import java.util.regex.*\n|    import java.util.stream.*<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"fazit\">Fazit<\/h2>\n\n\n\n<p><em>Module Import Declarations<\/em> k\u00f6nnen Java-Programme k\u00fcrzer und leichter wartbar machen, indem nicht mehr einzelne Klassen und Pakete, sondern ganze Module importiert werden k\u00f6nnen. Andererseits k\u00f6nnen sie auch die ewige Diskussion dar\u00fcber, ob man Klassen einzeln oder paketweise importieren soll, weiter ausufern lassen.<\/p>\n\n\n\n<p>In <em>Compact Source<\/em> Files (bzw. <em>Simple Source Files<\/em> bzw. <em>implizit deklarierten Klassen<\/em>) und JShell wird automatisch das <code>java.base<\/code>-Modul importiert, so dass hier alle Klassen dieses Moduls ohne Imports direkt verwendet werden k\u00f6nnen.<\/p>\n\n\n\n<p><em>Module Import Declarations<\/em> befindet sich bis Java 24 noch in der Preview-Phase und m\u00fcssen mit <code>--enable-preview --source &lt;Java-Version&gt;<\/code> aktiviert werden. Sie werden in <a href=\"https:\/\/www.happycoders.eu\/de\/java\/java-25-features\/#module-import-declarations-jep-511\">Java 25<\/a> finalisiert.<\/p>\n<aside><p>Wenn dir der Artikel weitergeholfen hat, w\u00fcrde ich mich sehr \u00fcber eine positive Bewertung auf meinem <a href=\"https:\/\/www.provenexpert.com\/de-de\/sven-woltmann-happycoders-eu\/7smk\/\" target=\"_blank\" rel=\"noopener\">ProvenExpert-Profil<\/a> freuen. Dein Feedback hilft mir, meine Inhalte weiter zu verbessern und motiviert mich, neue informative Artikel zu schreiben.<\/p>\r\n                        <p>\ud83d\udc49 <a href=\"https:\/\/www.provenexpert.com\/de-de\/sven-woltmann-happycoders-eu\/7smk\/\" target=\"_blank\" rel=\"noopener\">Bewertung abgeben<\/a><\/p>\r\n                        <p>Du m\u00f6chtest \u00fcber alle neue Java-Features auf dem Laufenden sein? Dann <a href=\"#\" data-formkit-toggle=\"d8ee997126\">klicke hier<\/a>, um dich f\u00fcr den HappyCoders-Newsletter anzumelden.<\/p>\r\n                        <p>\ud83d\udc49 <a href=\"#\" data-formkit-toggle=\"d8ee997126\">Newsletter-Anmeldung<\/a><\/p><\/aside>","protected":false},"excerpt":{"rendered":"<p>Wie importiert man mit \u201eimport module\u201c ganze Module und vermeidet so lange Import-Listen? Und wie l\u00f6st man mehrdeutige Klassennamen auf?<\/p>\n","protected":false},"author":1,"featured_media":42020,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"Wie vermeidet man mit \u201eimport module\u201c lange Import-Listen in Java? Wie l\u00f6st man mehrdeutige Klassennamen auf?","_seopress_robots_index":"","_uag_custom_page_level_css":"","_wp_convertkit_post_meta":{"form":"-1","landing_page":"","tag":"0","restrict_content":"0"},"_metis_text_type":"standard","_metis_text_length":8447,"_post_count":0,"footnotes":""},"categories":[64],"tags":[179],"class_list":["post-42007","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-java-amber-de"],"uagb_featured_image_src":{"full":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-imports-feature-image.jpg",1770,986,false],"thumbnail":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-imports-feature-image.jpg",150,84,false],"medium":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-imports-feature-image.jpg",300,167,false],"medium_large":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-imports-feature-image.jpg",768,428,false],"large":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-imports-feature-image.jpg",1024,570,false],"feature_thumb_224":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-imports-feature-image-224x125.jpg",224,125,true],"feature_thumb_336":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-imports-feature-image-336x187.jpg",336,187,true],"feature_thumb_504":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-imports-feature-image-504x281.jpg",504,281,true],"feature_thumb_672":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-imports-feature-image-672x374.jpg",672,374,true],"half_400":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-imports-feature-image-400x223.jpg",400,223,true],"half_600":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-imports-feature-image-600x334.jpg",600,334,true],"full_800":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-imports-feature-image-800x446.jpg",800,446,true],"full_944":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-imports-feature-image-944x526.jpg",944,526,true],"full_1200":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-imports-feature-image-1200x668.jpg",1200,668,true],"wide_1180":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-imports-feature-image-1180x490.jpg",1180,490,true],"wide_1770":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-imports-feature-image-1770x735.jpg",1770,735,true],"1536x1536":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-imports-feature-image.jpg",1536,856,false],"2048x2048":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/12\/java-module-imports-feature-image.jpg",1770,986,false]},"uagb_author_info":{"display_name":"Sven Woltmann","author_link":"https:\/\/www.happycoders.eu\/de\/author\/sven\/"},"uagb_comment_info":0,"uagb_excerpt":"Wie importiert man mit \u201eimport module\u201c ganze Module und vermeidet so lange Import-Listen? Und wie l\u00f6st man mehrdeutige Klassennamen auf?","public_identification_id":"16af37f739d548b097b658bcf689aa4d","private_identification_id":"43fd256083f247eaa7af52655e99bbbd","_links":{"self":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/42007","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/comments?post=42007"}],"version-history":[{"count":10,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/42007\/revisions"}],"predecessor-version":[{"id":52473,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/42007\/revisions\/52473"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/media\/42020"}],"wp:attachment":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/media?parent=42007"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/categories?post=42007"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/tags?post=42007"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}