java 泛型<T> 和 <?>的区别?
1. '?' 是通配符。它指的是 一个接口类型 的任何一个子类 类型,当然,也包括这个接口本身的类型。因为‘?’是通配符,因此在类的声明和方法的声明中用到的 ‘?’,是没有关联的。 所以,只要:List<?> getONEITEM(); 就可以通过编译。
例如,下列场景允许 List的元素可以是 Bar 的任何一个子类的类型:
interface Foo {
List<? extends Bar> get();
}
2. 'T' 是指在某一给定场合下一个接口的特定实现, 只能代表一个类型。
例如,下列场景意味着,整个接口(类) 仅能处理 Bar 这一个类型的对象:
interface Foo<T extends Bar> {
List<T> get();
}

浙公网安备 33010602011771号