Java中的泛型问号(?)和T都用于声明泛型类型,但是它们有一些不同之处:

  1. ? 表示未知类型,也称为通配符类型。它可以被用作方法的参数类型,表示方法可以接受任何类型的参数。例如:
public void print(List<?> list) {
    for (Object obj : list) {
        System.out.println(obj);
    }
}

这个方法可以接受任何类型的列表作为参数,例如 List、List 等。

  1. 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 类型参数适用于泛型类、泛型方法的参数类型,表示该类或方法可以接受任何类型的参数,但是该类型在方法或类被调用时确定。

java中泛型问号和T的区别

原文地址: https://www.cveoy.top/t/topic/Mxu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录