gpt4 book ai didi

java - 为什么从 Java 列表中删除基本类型时没有自动装箱?

转载 作者:搜寻专家 更新时间:2023-11-01 01:12:06 26 4
gpt4 key购买 nike

我有下面的代码抛出 IndexOutOfBoundsException:

 List<Character> list = new ArrayList<>();
char c = 'a';
list.add(c);
list.remove(c); // gets fixed by passing list.remove((Character)c);

我知道发生这种情况是因为自动装箱不会在删除时发生,而是在添加元素时发生。我的问题是为什么?添加从 charCharacter 的自动装箱是可能的,而在 remove 方法中则不行,这有什么特别之处?

最佳答案

这实际上不是自动拆箱的问题,而是重载的问题:存在一个更具体的List::remove(int)(按列表中的索引删除)方法比 List::remove(E)(通过使用 Object::equals 搜索对象来删除)。

在您的情况下,您的 char 被转换为 int

add 的情况下,与使用索引删除的等效版本是 List::add(int, E)(参见 javadoc for details)。 List::add(E) 等同于 list.add(add(list.size(), E)

关于java - 为什么从 Java 列表中删除基本类型时没有自动装箱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49617334/

26 4 0
文章推荐: Java 8 lambda 求和、计数和分组依据
文章推荐: java - Project Reactor 并行执行
文章推荐: php - 如何删除 woocommerce 容器 div '
'
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com