gpt4 book ai didi

java - 方法没有抛出 UnsupportedOperationException,尽管它应该抛出

转载 作者:行者123 更新时间:2023-12-02 13:04:47 25 4
gpt4 key购买 nike

出于某种原因,我能够在 AbstractList 的扩展上执行removeAll。

特别是,该列表是一个 java.util.Arrays.Arraylist(不是 java.util.ArrayList),它是 AbstractList 的扩展,不支持删除或添加。

更改以下行后

    Set<String> defaultList = new HashSet<>(Arrays.asList(getDefaultNames()));
Set<String> names = new HashSet<>(_adapter.getContainerNames());

defaultList.removeAll(names);

    List<String> defaultList = Arrays.asList(getDefaultNames());
List<String> names = _adapter.getContainerNames();

defaultList.removeAll(names);

即使在完全卸载应用程序之后,我也能够编译代码、执行代码并按排序顺序查看列表。

吃完饭回来,把所有的断点都去掉(我每行都有断点),并在新旧版本之间切换几次(在git中查看每个版本,编译并安装),我没有得到排序列表,而是得到了 UnsupportedOperationException。

现在我从 android.jar.java.util.Arrays 开源代码中可见的实现中发现,这根本不应该执行。

我真的很困惑,我猜这是某种缓存错误,或者可能是由于构建不干净,但是怎么会发生这样的事情呢?

这是预期的并且有可能重现吗?

以后我该如何避免这种情况?我每次都必须进行构建清理吗?

断点是否以某种方式阻止此代码正确构建干净?

最佳答案

有一些可能的解释,您已经提到了一些。在我看来,最可能的解释是,在您的情况下,如果您实际上尝试通过它删除一个或多个元素,则 removeAll() 仅抛出 UnsupportedOperationException 。 p>

我刚刚尝试过这个:

Arrays.asList("Ole", "No").removeAll(Collections.singletonList("HopefullyHelpful"));

在我的电脑上运行良好,没有任何异常迹象。我使用的是 Java 8,因此它可能无法在 Android 上正常运行,但您可以尝试。不过,我在文档中没有找到任何允许这样做的内容。

虽然先前构建的残留物是另一种可能的解释,但您的断点当然不应该与您的观察结果有任何关系。

关于java - 方法没有抛出 UnsupportedOperationException,尽管它应该抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44201540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com