java中的?和 T的用法 和 区别
时间: 2024-01-13 18:05:46 浏览: 32
在Java中,"?"和"T"是泛型中常用的符号。它们的用法和区别如下:
1. "?"是通配符,表示任意类型,常用于泛型方法或泛型类中的类型限制,例如:
```
public static <T extends Number> void printList(List<T> list) {
for(T elem : list) {
System.out.print(elem + " ");
}
System.out.println();
}
```
在上面的例子中,"<T extends Number>"表示T必须是Number或它的子类,而"?"表示可以是任意类型,用法如下:
```
public static void printList(List<?> list) {
for(Object elem : list) {
System.out.print(elem + " ");
}
System.out.println();
}
```
2. "T"是类型变量,表示一个类型,常用于泛型类或泛型方法中,例如:
```
public class Box<T> {
private T t;
public void set(T t) {
this.t = t;
}
public T get() {
return t;
}
}
```
在上面的例子中,"<T>"表示泛型类Box的类型参数,它的实际类型由Box实例化时确定,用法如下:
```
public static <T> void printArray(T[] array) {
for(T elem : array) {
System.out.print(elem + " ");
}
System.out.println();
}
```
在上面的例子中,"<T>"表示泛型方法printArray的类型参数,它的实际类型由调用该方法时传入的类型参数决定。