Java 23 引入了兩個新的預覽功能:模組導入聲明(預覽)和隱式聲明類別中的自動模組導入。這些不應該在生產代碼中使用,因為它們仍然可能發生變化。
1.模組導入聲明(預覽)- JEP 476
隨著 Java 23 的發布,我們現在可以在程式碼中匯入完整的模組。這意味著我們可以導入該模組導出的包中的所有類別。
例如,我們可以匯入完整的 java.base 模組並使用 List、Set、Map 和 Collectors 等類,而無需為每個類別建立單獨的導入語句。這可以透過使用「導入模組」語法來完成:
//Old style: import java.util.Map; // or import java.util.*; import java.util.function.Function; // or import java.util.function.*; import java.util.stream.Collectors; // or import java.util.stream.*; import java.util.stream.Stream; // (can be removed)
//New Style: import module java.base; public class MyExamCloud { public static Map> groupByFirstLetter(String...values) { return Stream.of(values).collect( Collectors.groupingBy(s -> Character.toUpperCase(s.charAt(0)))); } }
請注意,導入類別不需要位於模組中即可使用此語法。
如果有兩個同名的導入類,可能會出現不明確的類名。為了解決這個問題,我們需要直接在 import 語句中指定所需的類別。
此外,當一個模組傳遞導入另一個模組時,我們可以使用傳遞導入模組的導出包中的所有類,而無需任何明確導入。例如,java.sql 模組傳遞性地導入 java.xml 模組,因此我們可以使用 java.xml 中的類,而無需明確導入它們。
2.隱式宣告類別中的自動模組導入
在 Java 23 中,隱式宣告的類別將自動匯入完整的 java.base 模組。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3