预览版:该功能在当前版本可以使用,如果效果不是很好的话,可能以后的其他版本就会删去该功能。
最终版:该功能在之前版本效果很好,之后的每个版本中都会存在该功能。
基于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"); }
密封的类和接口限制了其他类或接口可以扩展或实现它们,允许类或接口的作者控制负责实现它的代码,提供比访问修饰符更具声明性的方式来限制超类的使用。当使用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 {} }
对开发无实际意义
简化数字敏感库开发,包括java.lang.Math和java.lang.StrictMath(对开发无实际意义)
|