关于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。第一工夫理解前沿行业音讯、分享深度技术干货、获取优质学习资源

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理