UnsupportedOperationException異常分析

直接先說結論:1不會報錯,2、3都會報UnsupportedOperationException錯

源碼分析:

①先看看ArrayList的add方法的原理

 

看上去很簡單,就是數組賦值,但是注意這個ArrayList的包名:java.util.ArrayList(這個就是引發問題的核心區別)

②再看看singletonLIst的add方法原理

 

實例化singletonLIst後並未找到add方法,說明調用的是其父類的add方法,看看唄~

這裏就是異常直接拋出來了!

③再看看asList的add方法原理吧

這裏你是不是很奇怪,這不是new了一個ArrayList嗎?其實這就是爲什麼我在第一點時候說注意看包名,這個ArrayList的包名是:java.util.Arrays

也就是說這個ArrayList是他自己實現的一個靜態內部類,然而依然沒有實現add方法,所以和2一樣調用父類的add方法,直接拋錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章