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。第一時間瞭解前沿行業訊息、分享深度技術乾貨、獲取優質學習資源