我对某事有些困惑。<T扩展AnInterface> vs <?扩展AnInterface>
我有一个类,其中它不是一个集合,但它确实是指通用对象:如果您
public class XClass<E extends AnInterface>{
E instanceobject;
public void add(E toAdd){}
}
public interface AnInterface{}
public class A implements AnInterface{}
public class B implements AnInterface{}
我相信我读的地方,<? extends AnInterface>
被使用(声明XClass的实例时)同时需要泛型对象中的多个子类型,而<T extends AnInterface>
只允许您在泛型类中同时拥有单一类型的子类型?
不过,我可以只使用:
XClass<AnInterface> xc = new XClass<AnInterface>();
A a = new A();
B b = new B();
xc.add(a);
xc.add(b);
而这样一来,我可以在超型的多种亚型的泛型类通过......
我没有看到的宗旨使用“?”并且使用Interface作为泛型参数有什么问题吗?
阿酷 - 我完全明白这一点!那么使用“?”有什么意义?通配符 – mezamorphic 2012-08-14 15:32:33
'?扩展Foo“意味着有一些_fixed_,但是_unknown_,扩展了'Foo'的类型,即”实际“泛型参数。 – 2012-08-14 15:44:22
增加了一个使用'?'通配符的例子。希望现在更加明确。 – pcalcao 2012-08-14 16:04:52