gpt4 book ai didi

java - 尽管 SortedSet 是接口(interface)而不是类,但为什么允许将元素添加到 SortedSet

转载 作者:行者123 更新时间:2023-11-29 03:39:22 27 4
gpt4 key购买 nike

有人能解释一下为什么这段代码编译并运行良好,尽管 SortedSet是接口(interface)而不是具体类:

public static void main(String[] args) {

Integer[] nums = {4, 7, 8, 14, 45, 33};

List<Integer> numList = Arrays.asList(nums);
TreeSet<Integer> numSet = new TreeSet<Integer>();
numSet.addAll(numList);

SortedSet<Integer> sSet = numSet.subSet(5, 20);
sSet.add(17);
System.out.println(sSet);

}

它正常打印结果:[7, 8, 14, 17]

此外,SortedSet 无法实例化(预期)这一事实更加令我惊奇。此行不编译:

SortedSet<Integer> sSet = new SortedSet<Integer>();

但是,如果我尝试代码:

public static void main(String[] args) {

Integer[] nums = {4, 7, 8, 14, 45, 33};

List<Integer> numList = Arrays.asList(nums);
numList.add(56);

System.out.println(numList);
}

它抛出一个 UnsupportedOperationException。我认为,这是因为 List 是一个接口(interface),不能作为具体类处理。 SortedSet 的真实情况是什么?

最佳答案

SortedSet 是一个接口(interface)。这意味着您可以引用实现此接口(interface)的类,但不能创建没有实现的类实例。

在 Arrays.asList() 的情况下,它返回一个包装原始数组的类。您不能添加到原始数组,因此不支持添加。例如,如果您使用 set,您将更改原始数组。

关于java - 尽管 SortedSet 是接口(interface)而不是类,但为什么允许将元素添加到 SortedSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13900524/

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