Java 21颠覆传统:未命名类与实例Main方法的编码变革

简介: Java 21颠覆传统:未命名类与实例Main方法的编码变革

Java 21 引入了两个语言核心功能:

  • 未命名的 Java 类
  • 新的启动协议:该协议允许更简单地运行 Java 类,并且无需太多样板

下面一起来看个例子。通常,我们初学 Java 的时候,都会写类似下面这样的 Hello World 程序

public class HelloWorld {
  
  public static void main(String[] args) {
    System.out.println("Hello, World!");
  }
}

对于程序的功能来说,这里有太多的混乱的代码、太多的概念、太多的构造。

  • Class 声明和强制的 public 访问修饰符是必须的。当用在外部组件定义良好的接口封装代码单元时,它们很有用。但在这个小例子中,它们毫无意义。
  • String[] 参数主要用于将代码与外部组件(在本例中为操作系统的 shell,接收命令传入的参数)连接。它在这里很神秘且无用,尤其是它从未被使用过。
  • static 修饰符是 Java 类和对象模型的一部分。对于新手来说,这不仅是神秘的,而且是有害的:要添加更多可以调用和使用的方法或字段,必须要么将它们全部声明(传播一种既不常见也不是好习惯的用法),或者就要面对是否有 static 修饰的区别问题,并学习如何实例化对象。

使用 Java 21 的 JEP 445 特性,该例子将简化为:

class HelloWorld {
  
  void main() {
     System.out.println("Hello, World!");
  }
}

如上例子,Java 21 增强了启动 Java 程序的协议,以允许实例使用 main 方法,且该方法不需要 static、不需要 public、也不需要任何参数。

其次,Java 21 还引入未命名的类来使声明隐式,像下面这样就可以了:

void main() {
   System.out.println("Hello, World!");
}


相关文章
|
2天前
|
Java 编译器 ice
【Java开发指南 | 第十五篇】Java Character 类、String 类
【Java开发指南 | 第十五篇】Java Character 类、String 类
23 1
|
1天前
|
设计模式 算法 Java
Java的前景如何,好不好自学?,万字Java技术类校招面试题汇总
Java的前景如何,好不好自学?,万字Java技术类校招面试题汇总
|
2天前
|
安全 Java 开发者
Java一分钟之-文件与目录操作:Path与Files类
【5月更文挑战第13天】Java 7 引入`java.nio.file`包,`Path`和`Files`类提供文件和目录操作。`Path`表示路径,不可变。`Files`包含静态方法,支持创建、删除、读写文件和目录。常见问题包括:忽略异常处理、路径解析错误和权限问题。在使用时,注意异常处理、正确格式化路径和考虑权限,以保证代码稳定和安全。结合具体需求,这些方法将使文件操作更高效。
11 2
|
2天前
|
安全 Java 开发者
Java一分钟之-Optional类:优雅处理null值
【5月更文挑战第13天】Java 8的`Optional`类旨在减少`NullPointerException`,提供优雅的空值处理。本文介绍`Optional`的基本用法、创建、常见操作,以及如何避免错误,如直接调用`get()`、误用`if (optional != null)`检查和过度使用`Optional`。正确使用`Optional`能提高代码可读性和健壮性,建议结合实际场景灵活应用。
21 3
|
2天前
|
存储 Java 索引
【Java开发指南 | 第十六篇】Java数组及Arrays类
【Java开发指南 | 第十六篇】Java数组及Arrays类
10 3
|
2天前
|
Java
多线程与并发,Java中介绍一下Thread类和Runnable接口的区别。
多线程与并发,Java中介绍一下Thread类和Runnable接口的区别。
33 1
|
2天前
|
Java Unix 程序员
java 8 新特性讲解Optional类--Fork/Join 框架--新时间日期API--以及接口的新特性和注解
java 8 新特性讲解Optional类--Fork/Join 框架--新时间日期API--以及接口的新特性和注解
65 1
|
2天前
|
安全 Java 调度
Java一分钟:多线程编程初步:Thread类与Runnable接口
【5月更文挑战第11天】本文介绍了Java中创建线程的两种方式:继承Thread类和实现Runnable接口,并讨论了多线程编程中的常见问题,如资源浪费、线程安全、死锁和优先级问题,提出了解决策略。示例展示了线程通信的生产者-消费者模型,强调理解和掌握线程操作对编写高效并发程序的重要性。
45 3
|
2天前
|
Java
一文搞清楚Java中的包、类、接口
包、类、接口、方法、变量、参数、代码块,这些都是构成Java程序的核心部分,即便最简单的一段代码里都至少要包含里面的三四个内容,这两天花点时间梳理了一下,理解又深刻了几分。
33 10
|
2天前
|
Java
Java中的多线程实现:使用Thread类与Runnable接口
【4月更文挑战第8天】本文将详细介绍Java中实现多线程的两种方法:使用Thread类和实现Runnable接口。我们将通过实例代码展示如何创建和管理线程,以及如何处理线程同步问题。最后,我们将比较这两种方法的优缺点,以帮助读者在实际开发中选择合适的多线程实现方式。
25 4