使用通配符类型(例如在方法正式参数中)的主要好处是为用户提供了灵活性,使其可以传递任何类型的
Collection,
List或任何实现Collection的东西(假设collection声明为
Collection<?>)。您通常会发现自己在形式参数中使用通配符类型。
但理想情况下,应避免将它们用作方法的返回类型。因此,您将强制该方法的用户在调用方使用通配符类型,即使他们不想这样做也是如此。通过使用通配符类型,您是在说,嘿!此方法可以返回的任何类型
Collection,因此,您的工作就是做这件事。你不应该那样做。最好使用有界类型参数。使用有界类型参数时,将根据您传递的类型或方法调用的目标类型来推断类型。
这是来自 有效Java项目28 的引用 :
不要将通配符类型用作返回类型。 与其给用户提供更多的灵活性,不如说是迫使他们在客户端代码中使用通配符类型。
正确使用的通配符类型对于类的用户几乎是不可见的。它们使方法接受应接受的参数,并拒绝应拒绝的参数。
如果类的用户必须考虑通配符类型,则类的API可能存在问题。



