从 Java 11 迁移到 Java 17 值得吗?( 二 )
System.out.printf("Object is a number %n", n);
}
}
Java 17. 更新的 intanceof
复制
public void findInstance(Object o) {
if (o instanceof String s) {
System.out.printf("Object is a string %s", s);
} else if (o instanceof Number n) {
System.out.printf("Object is a number %n", n);
}
}
5、Sealed Classes密封类Java 17也考虑了安全性,并朝着这个方向迈出了重要的一步 。这个想法是限制类或接口的继承,同时保持其公开 。结果,新的类类型,密封类,被添加到Java中 。密封类的语法允许你指定可以使用其功能的后代 。反过来,继承者还可以允许或拒绝继承,或者指定可以沿链继承的类 。此功能使你可以更灵活地创建项目,并方便地调整代码的API 。
Java 17. 密封类:
复制
public sealed class SealedClass permits AnotherSealedClass, AnotherNonSealedClass, AnotherFinalClass {
}
Java 17. 非密封继承人:
复制
public non-sealed class AnotherNonSealedClass extends SealedClass {
}
Java17.最终继承人:
复制
public final class AnotherFinalClass extends SealedClass {
}
Java17.密封继承人:
复制
public sealed class AnotherSealedClass extends SealedClass permits AnotherNonSealedClassTwo {
}
JavAI17.非密封继承人二级:
复制
public non-sealed class AnotherNonSealedClassTwo extends AnotherSealedClass {
}
6、NullPointerExceptions最后,Java 17 中一个非常有用的更新是改进的NullPointerException!最后,在堆栈跟踪日志中,你可以看到哪个特定字段导致了NullPointerException 。仅此功能就应该鼓励你切换到Java 17 。你不再需要长时间在代码中四处寻找发生异常的险恶地方;现在Java将为你完成所有工作 。
Java11.NPE:
复制
public static void main(String... args) {
String s = null;
System.out.println(s.toLowerCase());
}
复制
Exception in thread "main" java.lang.NullPointerException
at Main.main(Main.java:4)
Java17.改进的NPE:
复制
public static void main(String... args){
String s = null;
System.out.println(s.toLowerCase());
}
复制
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.toLowerCase()" because "s" is null
at edu.javamodules/edu.javaversions.eleventoseventeen.NpeExample.main(NpeExample.java:7)
7、其他创新当然,这并不是Java17中所做的更改的全部列表,但是讨论的创新是最引人注目的 。与往常一样,Java开发人员在改进JVM方面做得非常出色,使其更加高效 。
8、小结Java17中所做的所有改进都传达了一个信息:是时候切换到这个版本了 。过渡承诺语法更简洁,性能得到提高 。你的项目将获得安全性、灵活性和更好的错误消息 。如果你已经迁移到Java11,那么迁移到Java17 会很顺利 。Java的竞争优势在这里大放异彩,因为向后兼容性允许你切换到Java17而无需更改任何代码,并利用所有更新的功能 。Java17是Java11以来又一个LTS(长期支持)版本,可确保你在较长时间内收到所有必要的安全更新 。
原文链接:https://hackernoon.com/is-migrating-from-java-11-to-java-17-worth-it
【从 Java 11 迁移到 Java 17 值得吗?】
推荐阅读
- 从“车看灯”到“灯看车” 智慧交通让出行更便利
- 网易胡志鹏:从游戏到产业,AI大模型价值正显现
- 杨丽萍舞伴传来噩耗,王迪因抑郁症从39楼跳下,生命定格于44岁
- 一生为3个残疾男人而活!女强人黎姿,从落魄千金逆袭成女总裁
- 特斯拉连续降价,底气从何而来?|钛度热评
- 前港姐纵横商界三十年,一夜间从阔太沦为阶下囚
- 从胡歌到何润东,“清纯女神”刘诗诗现形记:连亲妈都看不下去了
- 杨丽萍舞伴抑郁自杀!从39楼一跃而下,杨丽萍哀悼再舞《雀之恋》
- 端午节的节日历史变迁图片 端午节的节日历史变迁
- 网络迁移性的概念及作用