Intro ClassCastException java.lang.Integer cannot be cast to java.lang.String

Intro ClassCastException java.lang.Integer cannot be cast to java.lang.String

這篇介紹ClassCastException java.lang.Integer cannot be cast to java.lang.String。

發生情境

1
2
3
4
5
6
7
8
從Elasticsearch撈欄位資料,將它轉型並塞至物件。

example:
xxx.setStatus(Integer.parseInt((String) hit.get("status")));

在 (String) hit.get("status") 這句會出現ClassCastException

因為Integer和String是不同基礎型別的Object,不能直接cast

解決方法

1
2
3
4
xxx.setStatus(Integer.parseInt((String) hit.get("status"))); 
改成
xxx.setStatus(Integer.parseInt(String.valueOf(hit.get("status"))));
可避免轉型錯誤