JDK17新特性详解
JDK16新特性详解,2021-03-17正式发布 JDK15新特性详解,2020-09-15正式发布 JDK14新特性详解,2020-03-17正式发布 JDK十三新特性详解,2019-09-17正式发布 JDK12新特性详解,2019-03-19正式发布 JDK11新特性详解,2018-09-25正式发布 JDK10新特性详解,2018-03-20正式发布 JDK9 新特性详解,2017-09-21正式发布 JDK8 新特性详解,2014-03-18正式发布 预览版:该功能在当前版本可以使用,如果效果不是很好的话,可能以后的其他版本就会删去该功能。 最终版:该功能在之前版本效果很好,之后的每个版本中都会存在该功能。 1、switch新增模式(预览版) 基于JDK16 instanceof模式匹配(最终版)优化升级switch使用方法,先回忆下JDK16模式匹配(最终版) if (obj instanceof String s) { // 直接使用 s拼接字符串 s += "heihei"; } else if (obj instanceof Integer i){ // 直接使用i进行整型逻辑运算 i += 1; } switch可直接用instanceof模式匹配选择(需要提前考虑null判断) Object o; switch (o) { case null -> System.out.println("首先判断对象是否为空,走空指针逻辑等后续逻辑"); case String s -> System.out.println("判断是否为字符串,s:" + s); case record p -> System.out.println("判断是否为Record类型: " + p.toString()); case int[] arr -> System.out.println("判断是否为数组,展示int数组的长度" + ia.length); case Integer i -> System.out.println("判断是否为Intger对象,i:" + i); case Student s -> System.out.println("判断是否为具体学生对象,student:" + s.toString()); case UserCommonService -> System.out.println("判断是否为普通用户实现类,然后走普通用户逻辑"); case UserVipService -> System.out.println("判断是否为vip用户实现类,然后走vip用户逻辑"); default -> System.out.println("Something else"); } 2、Realed class密封类(最终版) 密封的类和接口限制了其他类或接口可以扩展或实现它们,允许类或接口的作者控制负责实现它的代码,提供比访问修饰符更具声明性的方式来限制超类的使用。当使用final时,就不能子类继承,但同时开发接口的开发者又不想某些接口被继承,所以针对这一点,需要引入密封类来解决 public sealed interface Shape{ final class Planet implements Shape {} final class Star implements Shape {} final class Comet implements Shape {} } public abstract sealed class Test{ final class A extends Test {} final class B extends Test {} final class C extends Test {} } 3、随机数增强 对开发无实际意义 4、浮点运算更加严格 简化数字敏感库开发,包括java.lang.Math和java.lang.StrictMath(对开发无实际意义)