大家好,我是鵬磊。
這個提案主要是引入 「靈活的 Main 方法和匿名 Main 類」 ,希望 Java 的學習過程能更平滑,讓學生和初學者能更好地接受 Java 。
提案的作者 Ron Pressler 解釋:現在的 Java 語言非常適合開發和維護大型復雜應用程式,但學校在教編程時往往會從變量、函式和子程式等基本的小型編程概念開始,在這個階段,往往不需要類、包和模組的大型編程概念。
但現在的 Java 對初學者不太友好,比如經典的 Hello, World! 入門程式 :
public classHelloWorld{
publicstaticvoidmain(String[] args){
System.out.println("Hello, World!");
}
}
Ron 認為,作為新手入門的第一個程式,這段程式碼太復雜了。比如
class
聲明和強制性的
public
存取修飾詞是大型編程結構,它們在封裝具有定義良好的外部元件介面的程式碼單元時很有用,但在這個入門小範例中毫無意義。String [] args 參數用於將程式碼與外部元件連線起來,但在這段程式碼裏面不會被使用。static 修飾詞是 Java 類和物件模型的一部份,但在新手村出現也為時尚早。
作為最佳化,該提案首先增強了啟動 Java 程式的協定靈活性:
1.允許已啟動類的 main 方法具有 public 、 protected 或預設(即包)存取許可權。
2.如果啟動的類不包含帶 String [] 參數的 static main 方法,但包含不帶參數的 static main 方法,則呼叫該方法。
如果你近期準備面試跳槽,建議在ddkk.com線上刷題,涵蓋 一萬+ 道 Java 面試題,幾乎覆蓋了所有主流技術面試題,還有市面上最全的技術五百套,精品系列教程,免費提供。
3.如果啟動的類沒有 static main 方法,但有一個非 private 零參數建構函式(即 public 、 protected 或包存取)和一個非 private 例項 main 方法,然後構造該類的一個例項。如果該類有一個帶 String [] 參數的例項 main 方法,則呼叫該方法;否則,不帶參數呼叫例項 main 方法。
如此一來便允許省略
main
方法的
String[]
參數,並允許
main
方法既不是
public
也不是
static
。可以稍微簡化 Hello, World! :
classHelloWorld{
voidmain(){
System.out.println("Hello, World!");
}
}
此外,還要引入
匿名 Main 類
來隱式聲明
class
:
voidmain(){
System.out.println("Hello, World!");
}
到這裏 Java 的 Hello, World! 入門程式已經到了簡化,但在 Ron 眼裏,該 JEP 提供的最佳化只是使 Java 更易於學習的第一步,像 System.out.println 這種長方法 / 函式也是需要簡化的地方,不過這些問題需要在未來的 JEP 提案中逐步解決。
該最佳化屬於預覽語言功能,預設禁用。要在 JDK 21 中嘗試該範例,必須啟用預覽功能:用
javac --release 21 --enable-preview Main.java
編譯程式,用
java --enable-preview Main
執行;或者使用原始碼啟動器時,使用
java --source 21 --enable-preview Main.java
運行程式。
🔥 磊哥私藏精品 熱門推薦 🔥