在 JDK16 之前的版本中,我们不能在类名后面直接写参数来定义类的状态 。这是 JDK16 引入 record 类的一个新特性 。
调用 Record 类方式 , 如下:
public class App {public static void main(String[] args) {User user = new User("user", "123456");System.out.println(user.username());}}
注意事项:
- record 类不允许使用 abstract 关键字定义为抽象
- 所有成员变量均为 final 修饰,不允许再次赋值
- 允许出现静态变量/实例方法/静态方法
- 允许出现其他构造方法,但必须调用 record 构造方法
- Record 不允许 extends 继承其他类
以下是一个密封类的代码示例:
sealed class Human permits Kyrie, LeBron, George {public void printName() {System.out.println("Default");}}non-sealed class Kyrie extends Human {public void printName() {System.out.println("Bob");}}sealed class LeBron extends Human {public void printName() {System.out.println("Mike");}}final class George extends Human {public void printName() {System.out.println("Yannick");}}
在这个例子中,Human 是一个密封类,它只允许 Kyrie,LeBron 和 George 这三个类继承 。这样,我们就可以更精确地控制哪些类可以继承 Human 类,从而提高代码的安全性和可读性 。1.17 统一日志异步刷新在 JDK17 中,引入了一项新特性:统一日志异步刷新 。
先将日志写入缓存,然后再异步地刷新到日志文件,这样写日志的操作就不会阻塞执行业务逻辑的线程 , 从而提高了程序的运行效率 。这个特性对于需要大量日志输出,并且对性能有较高要求的应用来说 , 是一个非常实用的改进 。可以通过传递命令行选项 -Xlog:async 来开启此功能 。
总结从 JDK11 到 JDK17 ,Java 的发展经历了一系列重要的里程碑 。其中最重要的是 JDK17 的发布,这是一个长期支持(LTS)版本,它将获得长期的更新和支持,有助于保持程序的稳定性和可靠性 。此外,Java 的性能也有了显著的提升 。这些进步都反映了 Java 在持续改进和适应现代编程需求方面的承诺 。
参考文档
- https://openjdk.org/projects/jdk/
- JDK12: JDK12新功能深度解析_jdk12新特性-CSDN博客
- switch statement - What does the new keyword "yield" mean in Java 13? - Stack Overflow
- New Features in Java 13 | Baeldung
- Java 11 and 12 - New Features (packtpub.com)
- Java 16 and IntelliJ IDEA | The IntelliJ IDEA Blog (jetbrains.com)
- Sealed Class in Java - GeeksforGeeks
推荐阅读
- ChatGPT元年之后,AI重塑世界,人类如何与其“智慧共生”?
- 网站SEO优化:方法与案例
- 一段微信小程序前端与后端连接的代码,带注解
- 谢楠发长文回应吴京近期争议:尊重与爱护并存
- 汪峰与新女友竟相差16岁,身高还超过他,看来有代沟了
- 绝了!曝布克前女友与坏兔子分手后又约会!
- 贾玲瘦身照流出,A先生替身露脸,剧透的尺度与节奏
- 黄海冰:与丁克妻子离婚后,娶小12岁娇妻,今50岁把俩孩子宠上天
- 林志颖娇妻晒母子生活照!肤白貌美显年轻,与15岁儿子kimi似姐弟
- 47岁陈建州近照认不出!与范玮琪一家人合影,脸部发福判若两人