前方bug出沒,記錄一次解決UnsupportedOperationException異常的過程!
前言
開發(fā)工作者,不是在寫B(tài)ug的路上,就是在改Bug的路上,很多同學(xué)在遇到bug的時候很懵,不知道要怎么處理,而且也無法復(fù)現(xiàn),今天耀哥就給大家復(fù)現(xiàn)一個常見的bug,一起來看看怎么解決吧!
一.?bug 重現(xiàn)
近日耀哥的一個學(xué)生,在寫代碼的過程中,使用工具類 Arrays . asList() 把數(shù)組轉(zhuǎn)換成集合,然后他想往數(shù)組轉(zhuǎn)換的集合中再添加新的元素,結(jié)果莫名其妙的拋出了 UnsupportedOperationException 的異常.
核心代碼如下:
運行結(jié)果如下

二.?bug原因分析
打開Arrays.asList 這個方法的源代碼我們可以發(fā)現(xiàn):asList 的返回對象是一個 Arrays 內(nèi)部類,并沒有實現(xiàn)集合的修改方法。Arrays . asList 體現(xiàn)的是適配器模式,只是轉(zhuǎn)換接口,后臺的數(shù)據(jù)仍是數(shù)組。
三.?bug 修改
我們只要把由數(shù)組轉(zhuǎn)成的集合,通過ArrayList的構(gòu)造方法,轉(zhuǎn)成一個新的集合就可以完美解決該問題。
現(xiàn)在這個異常你知道該怎么解決了嗎?如果還有什么疑問,可以在評論區(qū)給我留言哦。
標簽: