gpt4 book ai didi

java - 不应在返回参数中使用通用通配符类型

转载 作者:IT老高 更新时间:2023-10-28 21:00:50 24 4
gpt4 key购买 nike

在方法的返回参数中不应该使用泛型通配符类型是否可行?

换句话说,声明如下接口(interface)确实有意义:

interface Foo<T> {
Collection<? extends T> next();
}

此外,是否可以说泛型通配符类型仅在方法的参数声明中才有意义?

最佳答案

在方法形式参数中使用通配符类型的主要好处是为用户提供了传递的灵 active ,例如 Collection 的任何类型, 或 List或任何实现 Collection 的东西(假设集合被声明为 Collection<?> )。您经常会发现自己在形式参数中使用通配符类型。

但理想情况下,您应该避免将它们用作方法的返回类型。因为那样的话,你会强制该方法的用户在调用者端使用通配符类型,即使他们不想这样做。通过使用通配符类型,您就是在说,嘿!此方法可以返回任何类型的 Collection ,所以你的工作就是照顾它。你不应该那样做。最好使用有界类型参数。使用有界类型参数,将根据您传递的类型或方法调用的目标类型来推断类型。

这是来自Effective Java Item 28 的引述:

Do not use wildcard types as return types. Rather than providing additional flexibility for your users, it would force them to use wildcard types in client code.
Properly used, wildcard types are nearly invisible to users of a class. They cause methods to accept the parameters they should accept and reject those they should reject. If the user of a class has to think about wildcard types, there is probably something wrong with the class’s API.

关于java - 不应在返回参数中使用通用通配符类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22815023/

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