List 报错 java.lang.UnsupportedOperationException
时间:2019-09-16
本文章向大家介绍List 报错 java.lang.UnsupportedOperationException,主要包括List 报错 java.lang.UnsupportedOperationException使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
废话不多说,上代码
public class ArrayListTest {
@Test
public void testList() {
List<Long> longList = new ArrayList<>();
longList.add(1L);
longList.add(2L);
longList.add(3L);
longList.add(4L);
longList.forEach(System.out::println);
System.out.println("----------------------------------");
List<Long> longList2 = Arrays.asList(1L, 2L, 3L);
longList2.add(4L);
longList2.forEach(System.out::println);
}
}
运行之后,你会看到如下结果
瞬间感觉到自己窒息了有么有,是不是不敢相信自己的眼睛啊,赶紧再运行一次,结果还是一样,就如下。
但是,愤怒归愤怒,还得解决不是,那咱们就来看看吧。
我们知道,longList
是我们自己定义的一个 java.util.ArrayList
,我们来看java.util.ArrayList
的部分结构
会发现它其实重写了add
方法,那我们调用add
方法添加元素,是没有任何毛病的,想怎么玩就怎么玩。
那咱们接下来看看Arrays.asList
这货发生了什么。
我们进入方法看看实现
看到它返回了一个ArrayList
,是不是感觉也没什么违和的,然后你就又急了,估计我要是在你面前,你就是这个表情。
别着急,别着急,重点来了。
来来来,看注释,为什么说返回的这货是一个有着list
外表的array
呢,那我们就进去看看。
进来之后你就感觉怪怪的,具体怪在哪儿吧,也说不上来,感觉看着这个包怎么那么欠抽呢。
嗷~~~,猛然想了一下,我们经常用到的好像是java.util.ArrayList
啊,这货竟然是java.util.Arrays.ArrayList
这么一想就明白了,为什么作者说这货就是“披着羊皮的狼外婆”呢,呃呃,不对,是“披着list
外皮的array
”。
然后我们再看看这货的结构。
不用找了,我不会给你截图的,这货方法还是很多的,截图有点费劲。但是你肯定找不到add
方法。
然后你就“顿悟”了,哦,原来这货压根就不让我添加元素啊。
聪明如你,当以后用到这种情况的时候就知道该怎么做了吧。
因为你看到的白羊可能不是真正的白羊,可能只是披了一张白羊皮的狼外婆。
原文地址:https://www.cnblogs.com/purplesky95/p/11528687.html
- Key-Value Coding(KVC),Key-Value Observing(KVO)和Cocoa Bindings for MonoMac
- [C#6] 7-索引初始化器
- jquery mobile 移动web(3)
- 卷积神经网络详解(二)——自己手写一个卷积神经网络
- VS 2010 SP1的一个功能(添加可部署依赖项)
- 一组扁平化组件推荐下载(PSD 格式)
- [C#6] 6-表达式形式的成员函数
- 在启用了IPV6的机器上获取客户端ipv4地址
- 使用 MDT 2010 进行可伸缩部署
- 性能优化工具 MVC Mini Profiler
- 在ASP.NET应用启动的时候初始化的几种方法
- [C#6] 8-异常增强
- 信息超新星的诞生
- jquery mobile 移动web(2)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Android Studio 4.0新特性及升级异常问题的解决方案
- Android Studio 4.0 正式发布在Ubuntu 20.04中安装的方法
- Android Studio 4.0 新功能中的Live Layout Inspector详解
- Android实现滑动刻度尺效果
- Android 仿微信发动态九宫格拖拽、删除功能
- android自定义等级评分圆形进度条
- Android Fragment实现底部通知栏
- Flutter实现局部刷新
- Android自定义条形对比统计图
- Android底部菜单栏(RadioGroup+Fragment)美化
- android自定义环形统计图动画
- 在Android环境下WebView中拦截所有请求并替换URL示例详解
- Android自定义控件横向柱状统计图
- Android处理视图圆角和色彩的工具类
- Flutter之Timer实现短信验证码获取60s倒计时功能的代码