gpt4 book ai didi

java - 初始化 ArrayList

转载 作者:搜寻专家 更新时间:2023-11-01 03:57:18 28 4
gpt4 key购买 nike

为什么我可以像这样初始化ArrayList:

ArrayList<Integer> x = new ArrayList<Integer>(Arrays.asList(1,2));

但是在使用的时候报错:

ArrayList<Long> x = new ArrayList<Long>(Arrays.asList(1,2));

最佳答案

解释

Java 自动转换 intlong如果需要的话。

但是,如果从 Integer 进行转换,Java 不会做同样的事情Long是需要的。

函数Arrays.asList(...)返回 List<E>E作为参数使用的类型。当你使用 1, 2, 3类型是 int .但是,数据类型 的一般用法为 List<int>在 Java 中是不可能的(至少目前是这样)。因此它会自动转换 intInteger并产生 List<Integer>目的。这个过程称为自动装箱,Java 可以针对所有数据类型对其相应的对象表示执行此操作。

如果你现在使用构造函数 new ArrayList<Integer>(List<E> list)它期望 E成为类型的东西 Integer .所以一个List<Integer>用作输入。

但是当你使用 new ArrayList<Long>(List<E> list)显然 E需要是类型 Long .但是对象 Integer类型 Long因此它不接受参数。 Integer的第一个常见类型和 Long是抽象类 Number (它还包含 DoubleFloat 和其他)( documentation )。


解决方案

所以这一切都围绕着输入 1, 2, 3被解释为 int而不是 long .您可以通过显式告诉 Java 将数字解释long来解决这个问题。 ,您可以通过附加 l 来实现或 L在数字之后:

new ArrayList<Long>(Arrays.asList(1L, 2L, 3L));

现在您收到一个 List<Long>然后将其添加到 ArrayList<Long> .


请注意,可以使用相同的技术将十进制数显式解释为 float而不是 double : 1.5F1.5f

关于java - 初始化 ArrayList<Long>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46564897/

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