版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
今天出現了一個令我感到驚奇的問題
Java 強轉類型,相信大家並不陌生,通常來說,強轉類型都是我們知道這個類可以轉換成另一個類,可能是他的父類或者是他的同類,這樣轉換一般來說千百年都不會出錯。例如下面的
//Father 是 son 的父類
Father father = new Son();
Son son = (String)father;
- 1
- 2
- 3
- 4
上面這種方式當然是沒有問題的,但是當引用類型的真實身份是父類本身的類型時,強制類型轉換就會產生錯誤。例如:
//Father 是 son 的父類
Father father = new Father();
Son son = (String)father;
- 1
- 2
- 3
- 4
通常我們在不確定是不是可轉的時候,我們會使用instanceof 關鍵字來判斷一下,避免出錯的情況。例如:
//Father 是 son 的父類
Father father = new Father();
//當滿足條件的時候就可以強轉了,否則我就不執行
if(father instanceof Son){
Son son = (String)father;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
是時候打破常規了

隨着框架的普及,現在很多人都用上了springboot,也引入了越來越多的包,這個時候就很可能會出現包沖突,或者類型引用錯誤,或者對現有的一些代碼造成影響,在這里,我遇到了自己人強轉自己人報錯的問題,也就是本文的重點“ java.lang.ClassCastException”
spring boot 項目中如果引入了 spring的devtools 包,就經常會產生這個問題,這個坑我找了幾個小時。
runtime("org.springframework.boot:spring-boot-devtools:${springBootVersion}")
- 1
這個包如果用的不熟的話,找問題找起來就很費勁了,好了,各位晚安,願天下代碼無bug.
/**
* ┌─┐ ┌─┐ + +
* ┌──┘ ┴───────┘ ┴──┐++
* │ │
* │ ─── │++ + + +
* ███████───███████ │+
* │ │+
* │ ─┴─ │
* │ │
* └───┐ ┌───┘
* │ │
* │ │ + +
* │ │
* │ └──────────────┐
* │ │
* │ ├─┐
* │ ┌─┘
* │ │
* └─┐ ┐ ┌───────┬──┐ ┌──┘ + + + +
* │ ─┤ ─┤ │ ─┤ ─┤
* └──┴──┘ └──┴──┘ + + + +
* 神獸保佑
* 代碼無BUG!
*/
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24

</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e9f16cbbc2.css" rel="stylesheet">
</div>
posted on 2019-11-03 03:24 DiligentCoder 閱讀(797) 評論(1) 編輯 收藏
