【 "<T>"是类型参数 】 【 "<?>"是无界通配符 】
类型参数"<T>"是声明泛型类或泛型方法。无界通配符"<?>"是使用泛型类或泛型方法。
<T>声明泛型类的类型参数或声明泛型方法
声明泛型类不能用无界通配符<?>
通配符是拿来使用定义好的泛型的
java泛型的两种用法:List<T>是泛型方法,List<?>是限制通配符
List<T>最应该出现的地方,应该是定义一个泛型List容器
List<?>一般就是在泛型起一个限制作用
通俗地说,"T"是定义类或方法时声明的东西,"?"是调用时传入的东西,二者是不同的概念。
有两种情况可以用"?":
① 使用过程中仅用到Object的方法,跟T的具体类型无关,像equals()等,因为任何一个泛型肯定是Object的子类
② 使用过程中不依赖于泛型。最典型的是Class<?>,因为Class类的方法大多跟泛型无关