gpt4 book ai didi

java - 返回集合 与集合<类型>

转载 作者:搜寻专家 更新时间:2023-11-01 01:21:56 24 4
gpt4 key购买 nike

这两种方法有什么区别?

Collection<Type> getTypes();

对比

Collection<? extends Type> getTypes();

Type 是类还是接口(interface)有关系吗?特别是,在设计 API 时,首选哪个版本?为什么?

最佳答案

Collection<Type> getTypes();

在这里,getTypes()必须返回 Collection<Type> (例如 ArrayList<Type>HashSet<Type> )。

Collection<? extends Type> getTypes();

在这里,getTypes()可以返回 Collection任何属于或扩展 Type 的东西, (例如 ArrayList<SubType>HashSet<SubType> )。所以任何可以从第一个变体返回的东西也可以从第二个变体返回。然而,在第二种情况下,您不知道集合的类型参数实际上是什么;你只知道它扩展了 Type .

至于应该首选哪个,这实际上取决于您要尝试做什么,以及什么在逻辑上更有意义。请记住,当您有 <? extends Type> ,你实际上不知道什么?是的,这有时会造成阻碍;通常第一个变体更合适。您可以在基类中使用第二个变体,并在子类中用更类似于第一个的东西覆盖它,例如:

@Override
Collection<SubType> getTypes() {
...
}

关于java - 返回集合<?扩展类型> 与集合<类型>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18382694/

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