查看原文
其他

Java 16 新特性:instanceof增强

SpringForAll 2022-07-05

The following article is from 程序猿DD Author DD

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新特性专栏!另外,如果你最近想跳槽的话,年前我花了2周时间收集了一波大厂面经,节后准备跳槽的可以点击这里领取


END



Spring Boot 中实现跨域的 5 种方式,你一定要知道!Java List复制:浅拷贝与深拷贝方法及区别
关于 Spring AOP 的 5 种通知类型,很少人知道它的优先级!
分布式和集群的区别是什么???

关注后端面试那些事,回复【2022面经】

获取最新大厂Java面经

最后重要提示:高质量的技术交流群,限时免费开放,今年抱团最重要。想进群的,关注SpringForAll社区,回复关键词:加群,拉你进群。

点击“阅读原文”领取2022大厂面经
↓↓↓ 

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存