简化 Hello World:Java 新写法要来了!! – 程序师-迪欧吧

OpenJDK 的 JEP 445 提案正在努力简化 Java 的入门难度。这个提案主要是引入 “灵活的 Main 方法和匿名 Main 类” ,希望 Java 的学习过程能更平滑,让学生和初学者能更好地接受 Java 。

提案的作者 Ron Pressler 解释:现在的 Java 语言非常适合开发和维护大型复杂应用程序,但学校在教编程时往往会从变量、函数和子程序等基本的小型编程概念开始,在这个阶段,往往不需要类、包和模块的大型编程概念。但现在的 Java 对初学者不太友好,比如经典的 Hello, World! 入门程序 :

publicclassHelloWorld{
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 方法,则调用该方法。

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运行程序。

其实,像这些新特性,不消刻意学习,只用学习类似 JDK 17 长期支持版本的Java版本就足够了

架构师专栏

未经允许不得转载:迪欧吧_技术交流_资源分享_热点资讯_免费VPS空间 » 简化 Hello World:Java 新写法要来了!! – 程序师-迪欧吧

相关推荐

    暂无内容!