我想将一个长对象添加到一个长列表中,但是我得到了一些我不明白的错误
我有以下最小示例:
package main;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<Long> LongList = List.of((long) 3);
LongList.add((long) 2);
}
}
错误消息是:
线程“main”中的异常 java.lang.UnsupportedOperationException 在 java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142) 在 java.base/java.util.ImmutableCollections$AbstractImmutableCollection.add(ImmutableCollections.java:147) 在 main.Test.main(Test.java:10)
我需要长格式,我试图改变我转换为长格式的方式。另外,我试图给出明确添加的位置,但没有任何改变。
来自List::of
(
docs.oracle.com
)的文档:
返回包含一个元素的不可修改的列表。有关详细信息,请参阅不可修改的列表。
这就是为什么调用
add(...)
会导致 UnsupportedOperationException
。如果我们想修改创建的列表,我们将不得不创建一个可修改的列表,例如:
List<Long> LongList = new ArrayList<>(List.of((long) 3));
LongList.add((long) 2);
或:
List<Long> LongList = new ArrayList<>();
LongList.add((long) 3);
LongList.add((long) 2);
关于代码的一些说明:
lowerCamelCase
,而不是UpperCamelCase
(LongList
-> longList
)2
-文字 3
和 long
,而不是将文字
long
和
2L
转换为
3L
您已经使用 List.of() 方法初始化了列表变量。这就是为什么你的列表是不可变的。不能向其中添加任何项目。这也可以在错误消息中看到。
请使用 ArrayList 的新实例初始化变量。然后你就可以开始添加项目了。
List<Long> longList = new ArrayList<>():
longList.add(3L);
longList.add(2L);