基于CSS3的3D立方体旋转动画

Java列表remove() 时报出 UnsupportedOperationException 的错误

Java列表remove() 时报出 UnsupportedOperationException 的错误

java.lang.UnsupportedOperationException
	at java.util.AbstractList.remove(AbstractList.java:161)
	at java.util.AbstractList$Itr.remove(AbstractList.java:374)
	at java.util.AbstractCollection.remove(AbstractCollection.java:293)
	......

错误原因 : 该List是一个AbstractList,不支持增删改操作

问题是在工作时遇到的,源代码就不展示了,模拟一个类似的场景进行DEBUG

@Test
public void test_delete(){
    List<String> strings = Arrays.asList("A", "B", "C");
    strings.remove("A"); // 报出 UnsupportedOperationException
}

第一步:打断点

image-20220215172548778

第二步:启动debug模式,(F7)强行进入方法

image-20220215172715259

第三步:走到断点标记处,再次强行进入

image-20220215172919016

最后来到了 AbstractList抽象类的remove()

image-20220215172952871

结论: 通过 ArrayList.asList() 函数得到的 ArrayList 并不是我们常用的 java.util.ArrayList 而是 Arrays类中一个内部类ArrayList。

public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    }

private static class ArrayList<E> extends AbstractList<E>
    implements RandomAccess, java.io.Serializable
{  .....  }
posted @   只会写error  阅读(429)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示