java.lang.UnsupportedOperationException.md
阿新 • • 發佈:2018-12-13
java.lang.UnsupportedOperationException
遇到這個異常,原因多半是將Arrays.asList()
當成java.util.ArrayList
使用了,並且呼叫了add
或者remove
的方法,如
List list = Arrays.asList(123, 456);
list.add(789);
解決方法:只要將Arrays.asList()
替換成java.util.ArrayList
使用即可解決問題。如下:
List list = new ArrayList(Arrays.asList(123, 456));
list.add(789);
說明
Arrays.asList()
ArrayList
,但卻是Arrays
內定義的內部類,和java.util.ArrayList
是兩個不同的類。
Arrays 內部類ArrayList |
java.util.ArrayList |
---|---|
繼承自 AbstractList ,實現 RandomAccess,java.io.Serializable | 繼承自 AbstractList ,實現 RandomAccess,java.io.Serializable,並且實現了List, Cloneable |
實現了set、get 方法 | 實現了add、remove、set、get 方法 |
兩者都是繼承java.uitl.AbstractList
java.uitl.AbstractList
中常用的add
、remove
、set
、get
是沒有具體實現的,預設會丟擲java.lang.UnsupportedOperationException
。如下:
而Arrays
內部類ArrayList
內是沒有實現add
、remove
,所以呼叫的時候會丟擲java.lang.UnsupportedOperationException
,必須使用java.util.ArrayList
才行。
#####兩者結構
Arrays
內部類ArrayList
java.util.ArrayList