[英]How does the java compiler treat missing type arguments for types besides <E>, e.g., <E extends Foo>
[英]In Java type arguments, does <? extends E> mean strictly subtypes only? or would E also suffice?
在Java类型参数中,是否仅表示严格的子类型? 还是E也足够了?
这不严格; E
就足够了。
是的, super
和extends
给出了包含上下限。
以下是Angelika Langer的Generics FAQ的引用:
什么是有界通配符?
带上限的通配符看起来像
? extends Type
? extends Type
和代表所有类型的系列,它们是Type
子Type
, 包括Type
。Type
被称为上限 。带下限的通配符看起来像
? super Type
? super Type
和代表所有类型的类型的Type
,类型包括Type
。Type
称为下限 。
List<? extends Animal> animalList=new List<Dog>();
List<? extends Animal> animalList=new List<Animal>();
两行都编译没有任何错误。 将列表作为参数的任何函数都能理解列表中的对象是E类型还是E的子类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.