Java 21 中的未命名類別和實例主要方法
一、簡介
Java 21 已經到來,在新功能中,我們可以看到 Java 如何透過未命名類別和實例 main 方法變得越來越適合初學者。這些內容的引入是使 Java 成為更適合初學者的程式語言的關鍵一步。
在本教程中,我們將探索這些新功能並了解它們如何使學生的學習曲線更加平滑。
2. 編寫基本的 Java 程式
傳統上,對於初學者來說,編寫第一個 Java 程式比其他程式語言稍微複雜一些。一個基本的 Java 程式需要宣告一個public
類別。此類別包含一個public static void main(String[] args)
方法,作為程式的入口點。
這一切只是為了在控制台中寫一個“Hello world”
:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
Java 21 大大簡化了我們編寫簡單程式的方式:
void main() {
System.out.println("Hello, World!");
}
我們將更詳細地介紹如何使用新功能實現語法簡化。
3. 實例主要方法
實例main()
方法的引入允許開發人員利用更動態的方法來初始化他們的應用程式。
3.1.了解實例主要方法
這改變了 Java 程式聲明其入口點的方式。事實上,Java 早期要求public
類別中存在帶有String[]
參數的static
main()
方法,正如我們在上一節中看到的那樣。
這個新協議更加寬鬆。它允許使用具有不同存取等級的main()
方法: public
、 protected
或 default (套件)。
此外,它不要求方法是static
或具有String[]
參數:
class HelloWorld {
void main() {
System.out.println("Hello, World!");
}
}
3.2.選擇啟動協議
完善的啟動協定會自動選擇我們程式的起點,同時考慮可用性和存取等級。
實例main()
方法應始終具有非private
存取等級。此外,啟動協議遵循特定的順序來決定使用哪種方法:
- 在啟動類別中宣告的
static void main(String[] args)
方法 - 在啟動類別中宣告的
static void main()
方法 - 在啟動的類別中宣告或從超類別繼承的
void main(String[] args)
實例方法 -
void main()
實例方法
當類別宣告實例main()
方法並繼承標準static
main()
方法時,系統將呼叫實例main()
方法。在這種情況下,JVM 在運行時發出警告。
例如,假設我們有一個超類別HelloWorldSuper,
它實作了一個長期建立的main()
方法:
public class HelloWorldSuper {
public static void main(String[] args) {
System.out.println("Hello from the superclass");
}
}
這個超類別由HelloWorldChild
類別擴充:
public class HelloWorldChild extends HelloWorldSuper {
void main() {
System.out.println("Hello, World!");
}
}
讓我們編譯超類別並使用— source 21
和–enable-preview
標誌來執行子類別:
javac --source 21 --enable-preview HelloWorldSuper.java
java --source 21 --enable-preview HelloWorldChild
我們將在控制台中得到以下輸出:
WARNING: "void HelloWorldChild.main()" chosen over "public static void HelloWorldSuper.main(java.lang.String[])"
Hello, World!
我們可以看到 JVM 如何警告我們程式中有兩個可能的入口點。
4. 未命名類
未命名課程是一項重要功能,旨在簡化初學者的學習曲線。它允許方法、欄位和類別在沒有顯式類別聲明的情況下存在。
通常,在 Java 中,每個類別都存在於套件中,每個套件也存在於模組中。然而,未命名的類別存在於未命名的套件和未命名的模組中。它們是final
,只能擴展Object
類,而不實作任何介面。
鑑於這一切,我們可以聲明main()
方法,而無需在程式碼中明確聲明該類別:
void main() {
System.out.println("Hello, World!");
}
利用這兩個新功能,我們成功地將程式變得非常簡單,任何開始使用 Java 程式設計的人都可以更容易理解。
未命名的類別幾乎與明確聲明的類別完全相同。其他方法或變數被解釋為未命名類別的成員,因此我們可以將它們添加到我們的類別中:
private String getMessage() {
return "Hello, World!";
}
void main() {
System.out.println(getMessage());
}
儘管無名類簡單且靈活,但它們具有固有的限制。
直接建構或按名稱引用是不可能的,而且它們不定義任何可從其他類別存取的 API 。這種不可存取性也會導致 Javadoc 工具在為此類類別產生 API 文件時出現問題。然而,未來的 Java 版本可能會調整和增強這些行為。
5. 結論
在本文中,我們了解到 Java 21 透過引入未命名類別和實例 main() 方法,在增強使用者體驗方面取得了重大進展,特別是對於那些剛開始程式設計之旅的使用者來說。
透過簡化程式設計的結構,這些功能使新手能夠更快地專注於邏輯思維和解決問題。
與往常一樣,原始碼可以在 GitHub 上取得。