java.lang.UnsupportedOperationException

 其他博客:

MyBatis之java.lang.UnsupportedOperationException异常解决方案

mybatis中的返回数据错误

  • 结论:resultType返回的是集合中的元素类型(resultType="String"),而不是集合本身(resultType="java.util.List")

List 进行 remove 操作时抛出 java.lang.UnsupportedOperationException 异常分析

问题解析:

使用 Arrays.asList(arr) 转换的 List 并不能进行 add 和 remove 操作。
Arrays.asList(arr) 返回的类型是 Aarrays$ArrayList 并不是 ArrayList,
Aarrays$ArrayList 和 ArrayList 都继承 AbstractList,但是 AbstractList 中的 add 方法和 remove 方法都是直接抛出 UnsupportedOperationException,并没有直接实现。
ArrayList 重写了 add 方法和 remove 方法,能够进行对应的添加和删除操作,Aarrays$ArrayList 却没有去重写,所以此时调用 add 方法和 remove 方法会抛出 UnsupportedOperationException。

        String[] ss = new String[] { "111", "222" };
        //String[] 转   List 处理

      ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(ss));

范例:

package com.company.test;

import java.util.Arrays;
import java.util.List;

public class ArrayListTest {

	public static void main(String[] args) {
		String[] ss = new String[]{"111","222"};
		List<String> list = Arrays.asList(ss);
		//ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(ss));
		list.add("333");
		for (String string : list) {
			System.out.println(string);
		}
	}

}

结果:

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.add(Unknown Source)
	at java.util.AbstractList.add(Unknown Source)
	at com.jiuqi.test.ArrayListTest.main(ArrayListTest.java:12)

 

 解决办法:

package com.company.test;

import java.util.ArrayList;
import java.util.Arrays;

public class ArrayListTest {

	public static void main(String[] args) {
		String[] ss = new String[] { "111", "222" };
		//
		//String[] 转   List 处理
		ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(ss));
		
		arrayList.add("333");
		for (String string : arrayList) {
			System.out.println(string);
		}
	}

}

结果:

111
222
333

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值