在 Java 23 中,Oracle 团队针对隐式类和实例主方法提出了一些增强功能,这将进一步简化新手程序员的学习曲线。
在本文中,我们将简要讨论隐式类、实例主方法以及 JDK 23 中新提出的增强功能。
JDK 23 之前
隐式类(或未命名类)和实例主方法最初是在 Java 21 中作为预览功能引入的。
传统上,Java 要求开发人员明确定义类来封装成员变量和方法。这可能很麻烦,尤其是当我们编写逻辑简单的小程序时。
开发人员还必须使用 static 关键字和方法参数声明 main 方法,该方法是应用程序的入口点。这些结构通常会让初学者感到困惑,并限制成员变量的可见性。
通过引入隐式类,开发人员现在可以编写无需类声明的代码。编译器将在后台自动生成类,以便开发人员可以专注于代码的核心逻辑。
实例主方法功能允许开发人员在类实例中定义主方法。这意味着开发人员现在可以直接访问实例变量和方法,这将使我们能够在主方法中编写更复杂的代码。
此外,它不要求方法是静态的或具有String[]参数,这使得初学者很容易上手。
Java 23 中的增强功能
Java 23 中提出了新的增强功能,使该语言更受初学者欢迎。让我们在本节中简要了解它们。
与控制台交互
许多初级程序员经常想编写与控制台交互的程序,例如在控制台上输入文本和获取控制台输入。然而,为了实现这一点,他们需要编写复杂的句子,这对初学者来说很神秘。
例如,像从用户那里获取输入并显示它一样简单的代码需要我们编写以下代码:
import java.io.BufferedReader; |
上面的代码对于初学者来说看起来很神秘,并可能引发许多问题,例如BufferedReader和InputStreamReader是什么?try、catch是什么? IOException是什么?
通过提议的增强,我们可以在每个隐式类的主体中轻松使用以下方法:
public static void println(Object object); |
为了实现这一点,Java 在java.io包中引入了一个名为IO 的新顶级类。它声明了上述三种静态方法,用于控制台的文本 I/O,仅此而已。每个隐式声明的类都会自动导入这些静态方法,就像包含以下声明一样:
import static java.io.IO.*; |
新的类java.io.IO是 JDK 23 中的预览 API。
这样,我们可以更简洁地写出上面的代码:
void main() { |
要运行上述代码,我们需要通过启用预览标志来编译并运行程序。为此,转到源文件所在的目录,然后执行两个命令:
javac --source 23 --enable-preview .\Test.java |
自动导入java.base模块
要用 Java 编写任何有意义的代码,我们需要将其他包导入到我们的代码中。然而,对于初学者来说,这些导入语句看起来很奇怪,可能会造成另一个困惑。
新提案通过使java.base 模块导出的包的所有公共顶级类和接口可供每个隐式类的主体使用,从而进一步简化代码。
这样,程序员就可以使用这些类/接口,而不必使用显式的导入语句。这些类将根据需要隐式导入。因此, java.io、java.math和java.util等常用包中的流行 API可以立即使用,无需任何麻烦。
此前,Oracle 团队提出了一种新的导入声明,格式为“ import module M ”,该格式会根据需要导入模块 M 导出的包中的所有公共顶级类和接口。
隐式声明的类隐式导入java.base模块,就好像声明导入模块 java.base出现在每个包含隐式类的源文件的开头一样。
我们已经看到隐式类和实例主要方法如何显著改善初学者程序员的体验,同时也为经验丰富的程序员增加价值,使他们现在可以编写更干净、更易读的代码。