乐趣区

关于java:Java-16-新特性instanceof增强

instanceof这个关键词,次要用来判断某个对象是不是某个类的实例。

比方,有时候咱们要解决一个相似这样的数据集:

Map<String, Object> data = new HashMap<>();
data.put("key1", "aaa");
data.put("key2", 111);

这个 Map 中的 Value 值因为可能是不同的对象,所以定义的是 Object。这个时候,当咱们 get 进去的时候,就须要去判断和转换之后再去解决。

比方,咱们取出 key1value,而后截取一段字符串的操作,就须要这样写:

Object value  =data.get("key1");
if (value instanceof String) {String s = (String) value;
  System.out.println(s.substring(1));
}

先判断获取的 value 是否是 String,再做强制类型转换,而后再对字符串进行操作。这是传统的写法,而在 Java 16 的加强之后,对于 instanceof 的判断以及类型转换能够合二为一了,所以改良后的写法能够如下:

Object value  =data.get("key1");
if (value instanceof String s) {System.out.println(s.substring(1));
}

是不是简略不少呢?如果没用过的话,连忙操作试试看吧!

Tips:该性能经验了 2 个 Preview 版本(JDK 14 中的 JEP 305、JDK 15 中的 JEP 375),最终定稿于 JDK 16 中的 JEP 394。

如果您学习过程中如遇艰难?能够退出咱们超高品质的技术交换群,参加交换与探讨,更好的学习与提高!另外,不要走开,关注我!继续更新 Java 新个性专栏!

欢送关注我的公众号:程序猿 DD。第一工夫理解前沿行业音讯、分享深度技术干货、获取优质学习资源

退出移动版