java中泛型问号和T的区别
Java中的泛型问号(?)和T都用于声明泛型类型,但是它们有一些不同之处:
- ? 表示未知类型,也称为通配符类型。它可以被用作方法的参数类型,表示方法可以接受任何类型的参数。例如:
public void print(List<?> list) {
for (Object obj : list) {
System.out.println(obj);
}
}
这个方法可以接受任何类型的列表作为参数,例如 List
- T 表示类型参数。它可以被用作泛型类、泛型方法的参数类型,表示该类或方法可以接受任何类型的参数,但是该类型在方法或类被调用时确定。例如:
public class MyList<T> {
private List<T> list = new ArrayList<T>();
public void add(T element) {
list.add(element);
}
public T get(int index) {
return list.get(index);
}
}
这个类可以用来存储任何类型的元素,但是在实例化对象时需要指定具体的类型,例如:
MyList<String> strList = new MyList<String>();
MyList<Integer> intList = new MyList<Integer>();
总的来说,泛型问号(?)和 T 都用于声明泛型类型,但是它们的使用场景略有不同。? 通配符类型适用于方法参数类型,表示方法可以接受任何类型的参数;而 T 类型参数适用于泛型类、泛型方法的参数类型,表示该类或方法可以接受任何类型的参数,但是该类型在方法或类被调用时确定。
原文地址: https://www.cveoy.top/t/topic/Mxu 著作权归作者所有。请勿转载和采集!