从 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 值得吗?】


推荐阅读