当前位置: 首页 > news >正文

Java 21 新特性:Unnamed Classes and Instance Main Methods

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

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

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

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

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

The static modifier is part of Java's class-and-object model. For the novice, static is not just mysterious but harmful: To add more methods or fields that main can call and use the student must either declare them all as static — thereby propagating an idiom which is neither common nor a good habit — or else confront the difference between static and instance members and learn how to instantiate an object.

  • 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!");
}

怎么样,是不是这样之后,Java的上手例子也能像python、go等其他高级语言那样简单的呢?你觉得是否有助于初学者上手Java呢?

如果您学习过程中如遇困难?可以加入我们超高质量的技术交流群,参与交流与讨论,更好的学习与进步!另外,不要走开,关注我!持续更新Java新特性专栏!

欢迎关注我的公众号:程序猿DD。前沿技术早知道,弯道超车有希望!积累超车资本,从关注DD开始!

http://www.lryc.cn/news/179903.html

相关文章:

  • Tomcat启动后的日志输出为乱码
  • CSP-J第二轮试题-2021年-4题
  • 10.1 今日任务:select实现服务器并发
  • P1540 [NOIP2010 提高组] 机器翻译(模拟)
  • 生信教程:ABBA-BABA分析之滑动窗口
  • 二分答案(求最大值的最小值||求最小值的最大值)
  • 思维模型 周期
  • 从 0 到 1 ,手把手教你编写《消息队列》项目(Java实现) —— 介绍项目/ 需求分析
  • Python学习之索引与切片
  • 编程每日一练(多语言实现)基础篇:满足abcd=(ab+cd)^2的数 (增加Go语言实现)
  • LeetCode 热题 HOT 100:回溯专题
  • 喝健康白酒 有益生心健康
  • 动态规划:两个数组的dp问题(C++)
  • BASH shell脚本篇2——条件命令
  • 【图论C++】Floyd算法(多源最短路径长 及 完整路径)
  • 小谈设计模式(11)—模板方法模式
  • C#程序中很多ntdll.dll、clr.dll的线程
  • 低代码工作流程管理系统:提升企业运营效率的利器
  • HIVE SQL regexp_extract和regexp_replace配合使用正则提取多个符合条件的值
  • debian 安装matlab2022b报错解决方法与问题解决思路
  • Jenkins集成AppScan实现
  • 10.1 File类
  • [论文笔记]UNILM
  • LLM之Colossal-LLaMA-2:Colossal-LLaMA-2的简介、安装、使用方法之详细攻略
  • 国庆作业2
  • fork仓库的代码如何同步主仓库代码
  • 【Axure】元件库和母版、常见的原型规范、静态原型页面制作
  • 在设备树中描述中断
  • ccf_csp第一题汇总
  • uniapp 实现下拉筛选框 二次开发定制