java.lang.UnsupportedOperationException at java.util.AbstractList

private List pages=Arrays.asList(new Integer[]{1,2,3,4,5});
以上是聲明
下面是計算賦值:
public void setCurrPage(int currPage) {
if(currPage<1){
this.currPage=1;
}else if(currPage>allPage){
this.currPage=allPage;
}else{
this.currPage = currPage;
}
if(currPage<3){
for(int i=0;i<5;i++){
this.pages.add(i+1);
}
}else if(currPage>allPage-2){
for(int i=4;i>=0;i–){
this.pages.add(allPage-i);
}
}else{
for (int i=0;i<5;i++) {
this.pages.add(currPage+(i-2));
}
}

}

加粗部分本意是新建數組後再添加新的元素,然而忘記再循環之前將數組賦值爲新數組
this.pages=new ArrayList(5);
這句話!!,就導致在原數組上添加,但是問題就是聲明處的 Arrays.asList() 方法和ArrayList< >()方法不同,前者返回的是Arrays包內自己的內部靜態類ArrayList(),這個東西不是常用的ArrayList (),方法內的add()方法沒用實現,一系列操作都沒實現,只會拋出異常,所以必須自己手動再創建一個正常常用的ArrayList();
https://blog.csdn.net/liu_005/article/details/74091805 ,詳情這篇講的很棒,人家排錯方式也很棒!
更改後:
if(allPage>=5){
if(currPage<3){
this.pages=new ArrayList(5);
for(int i=0;i<5;i++){
this.pages.add(1+i);
}
}else if(currPage>allPage-2){
this.pages=new ArrayList(5);
for(int i=4;i>=0;i–){
this.pages.add(allPage-i);
}
}else{
this.pages=new ArrayList(5);
for (int i=0;i<5;i++) {
this.pages.add(currPage+(i-2));
}
}
}else{
this.pages=new ArrayList(allPage);
for (int i=0;i<allPage;i++) {
this.pages.add(i+1);
}
}

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