? extends T
时间: 2023-08-31 20:04:48 浏览: 84
`? extends T`是一个Java中的通配符表达式,用于表示一个未知类型,该类型是T的子类或T本身。它表示的是上界通配符,表示可以接受T以及T的子类作为参数。
这个通配符在泛型中经常用于限制方法的参数类型,在使用时可以接受任何T的子类作为参数。
例如,假设有一个泛型方法,需要接受一个List类型的参数,并且只需要读取其中的数据而不需要修改。可以使用通配符来限定参数类型:
```java
public void printList(List<? extends T> list) {
for (T element : list) {
System.out.println(element);
}
}
```
在调用该方法时,可以传入一个List<T>、List<T>的子类或者List<T>实现类的对象,因为它们都满足了`? extends T`的限制条件。
```java
List<Integer> integers = new ArrayList<>();
printList(integers); // 可以传入List<Integer>
List<Number> numbers = new ArrayList<>();
printList(numbers); // 可以传入List<Number>
List<Object> objects = new ArrayList<>();
printList(objects); // 可以传入List<Object>
```
总结起来,`? extends T`表示可以接受T的子类或T本身作为参数的通配符表达式。
阅读全文