Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

泛型之常用的通配符有哪些?

未关闭
#1,692 2 条评论 1 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
35/100
Issue 类型
文档
描述清晰度
需要澄清
活跃度
停滞
技术栈
java
领域
documentation

调研方向

未指定文件或测试。首先在仓库中定位 Java 泛型或通配符文档,然后根据相邻指南检查 issue 中的说明和示例。确定预期范围并使相关文档准确解释有界、无界和下界通配符后,即视为完成。

由索引模型根据 Issue 内容生成。

描述

perfect content

常用的通配符为: T,E,K,V,?
? 表示不确定的 Java 类型
T (type) 表示具体的一个 Java 类型
K V (key value) 分别代表 Java 键值中的 Key Value
E (element) 代表 Element

上面说的 T、E、K、V 其实都只是类型参数。而 ? 才是通配符,而且准确来说,是无限定通配符。

通配符分为有限定通配符,无限定通配符,超类型通配符。

有限定通配符:形式类似于 <? extends E>,E 如果为类,只有传入的类型参数为 E 的本身及子类才可以使用,E 如果为接口,则必须实现该接口,只能读不能写,可以用类型参数替代。

  public void addAll(DynamicArray<? extends E> array) {

 }

无限定通配符:形式为 <?>,都可以使用,只能读不能写,可以用类型参数替代。

  public void addAll(DynamicArray<?> array) {
 
 }

超类型通配符:形式为 <? super E>,可以实现对象往父类型写入,不可以用类型参数替代。

   public void copyTo(DynamicArray<? super E> dest) {

    }

简单总结
其中有限定通配符和无限定通配符只能读不能写,可以被类型参数替代。而超类型通配符可以使用对象往父类型写入,不可以用类型参数替代。

有限定通配符和无限定通配符既然能被类型参数替换,该如何选择使用的?
应该根据使用场景:

  1. 需要写入的,必须使用类型参数。
  2. 只需要读的,优先使用通配符,通配符让代码看起来更简单。
主要语言
JavaScript
星标
159k
派生
46.1k
平均合并
1 天 8 小时
30 天内合并 PR
10

贡献指南

这个仓库没有索引到贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

Snailclimb/JavaGuide 的其他 Issue

查看 Snailclimb/JavaGuide 的全部 Issue

相似的 Issue

更多 JavaScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。