简单的说 <?>可以匹配任何类型,<T>确定了一种。 T 是一种类型。?是泛指(就是通配符)。
说白了就是写成T就是将类型固定,而?则不固定,比如下面这个例子
这么写就会报错CollectionText<Collection> list = new CollectionText<ArrayList>(new ArrayList());
如果把 CollectionText<T extends Collection> 改成CollectionText<?extends Collection> list = new CollectionText<ArrayList>(new ArrayList());则不会报错 |