java 泛型<T> 和 <?>的区别?

1.    '?' 是通配符。它指的是 一个接口类型 的任何一个子类 类型,当然,也包括这个接口本身的类型。因为‘?’是通配符,因此在类的声明和方法的声明中用到的 ‘?’,是没有关联的。 所以,只要:List<?>  getONEITEM(); 就可以通过编译。 
例如,下列场景允许 List的元素可以是 Bar 的任何一个子类的类型: 

interface Foo {
     List<? extends Bar> get();
}

2.   'T' 是指在某一给定场合下一个接口的特定实现, 只能代表一个类型。
例如,下列场景意味着,整个接口(类) 仅能处理 Bar 这一个类型的对象:

interface Foo<T extends Bar> {
     List<T> get();
}
posted @ 2019-07-19 18:11  天涯海角路  阅读(573)  评论(0)    收藏  举报