instanceof
这个关键词,次要用来判断某个对象是不是某个类的实例。
比方,有时候咱们要解决一个相似这样的数据集:
Map<String, Object> data = new HashMap<>();
data.put("key1", "aaa");
data.put("key2", 111);
这个 Map 中的 Value 值因为可能是不同的对象,所以定义的是 Object。这个时候,当咱们 get 进去的时候,就须要去判断和转换之后再去解决。
比方,咱们取出 key1
的value
,而后截取一段字符串的操作,就须要这样写:
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。第一工夫理解前沿行业音讯、分享深度技术干货、获取优质学习资源