通配符实参<?>:

  1. Java的一个泛型特性,通配符实参。通配符实参由“?”指定代表未知的类型。
  2. 在泛型代码中,问号(?)表示未知类型,称为“通配符”,可以作为形式参数、字段、局部变量的类型,也可以作为返回值类型(尽管编程时返回值类型最好尽量明确,但是,通配符不能用于泛型方法调用,泛型类实例创建或者子类的类型实际参数)

上界通配符:

可以放宽对变量的限制,如<? extends Number>


无界通配符:

<?>,即所谓的“未知类型列表”。

无界通配符适用情况:

  • 当一个方法用Object类型提供的功能来实现时,无界通配符是适用的。
  • 若代码使用了泛型类中的方法,而这些方法又是依赖于类型形式参数的,那么无界通配符也是有用的。

下界通配符:

上界通配符把未知类型限制为某个指定类型或者该类型的“子类型”,并用关键字extends表示,类似地,下界通配符也将未知类型限制为某个指定类型或者该类型的“超类型”
下界通配符用“通配符符号(?)+关键字super+下界”表示为<? super A>
可以为通配符指定上界或者下界,但不能两者都指定。


如果一个泛型方法不满足条件时,可以写一个私有辅助方法来辅助通配符,以修正错误。


不同泛型之间的数据类型不能交换转换赋值。