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