java如何使用通配符
通配符的基本概念
Java中的通配符主要用于泛型,表示未知类型。通配符用问号(?)表示,分为无界通配符、上界通配符和下界通配符。
无界通配符
无界通配符表示可以接受任何类型,通常用于泛型类或方法中不需要关心具体类型的情况。语法为<?>。

List<?> list = new ArrayList<String>(); // 可以接受任何类型的List
上界通配符
上界通配符限制通配符的类型为某个类或其子类,使用extends关键字。语法为<? extends T>。
List<? extends Number> numbers = new ArrayList<Integer>(); // 接受Number或其子类
下界通配符
下界通配符限制通配符的类型为某个类或其父类,使用super关键字。语法为<? super T>。

List<? super Integer> integers = new ArrayList<Number>(); // 接受Integer或其父类
通配符的使用场景
通配符通常用于泛型类或方法的参数中,增加代码的灵活性。例如,Collections.copy方法的签名就使用了通配符:
public static <T> void copy(List<? super T> dest, List<? extends T> src);
通配符的限制
通配符不能用于创建泛型类的实例,也不能用于泛型方法的类型参数。例如,以下代码会编译错误:
List<?> list = new ArrayList<?>(); // 编译错误
通配符与类型参数的区别
通配符通常用于方法参数,表示接受多种类型;类型参数(如<T>)通常用于泛型类或方法,表示具体的类型。两者可以结合使用以实现更灵活的泛型设计。





