gpt4 book ai didi

java - 使用通用 Set 接口(interface)时指定 HashSet 的类型有什么用?

转载 作者:行者123 更新时间:2023-11-30 06:34:23 24 4
gpt4 key购买 nike

如果您实例化一个新的 HashSet,之后您通常会使用 Set 接口(interface)来处理它。就像

Set<T> set = new HashSet();

那么显式指定 HashSet 的类型有什么用呢?例如:

Set<T> set = new HashSet<T>();

我在好几本书中都看到过它,但我想不出它有什么用。如果您需要访问该集合,无论如何您都将使用接口(interface)(已经参数化)。

最佳答案

如果你这样说:

Set<T> set = new HashSet();

您会收到未经检查的转换警告。 new HashSet() 的静态类型是原始 HashSet,将其转换为泛型类型可能不安全。

在其他情况下,进行赋值会导致发生类型推断。调用静态方法是典型的例子。例如:

Set<T> set = Collections.emptySet();

但是,Java 不会对 new 运算符进行推理,因为这会给语言带来歧义。

如果您不喜欢冗余,您可以使用包装器静态方法,然后进行推理。谷歌的Guava这样做,所以你可以说:

Set<T> set = Sets.newhashSet();

关于java - 使用通用 Set 接口(interface)时指定 HashSet 的类型有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7067109/

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