加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 07:38:12 所属栏目:Java 来源:网络整理
导读:是否可以说通用通配符类型不应该用在方法的返回参数中? 换句话说,声明一个如下所示的接口是有意义的: interface FooT { Collection? extends T next();} 另外,可以说通用通配符类型仅在方法的参数声明中有意义吗? 解决方法 在方法形式参数中使用通配符类
是否可以说通用通配符类型不应该用在方法的返回参数中?

换句话说,声明一个如下所示的接口是有意义的:

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

另外,可以说通用通配符类型仅在方法的参数声明中有意义吗?

解决方法

在方法形式参数中使用通配符类型的主要好处是为用户提供传递的灵活性,比如任何类型的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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读