在Java类型参数中,仅指严格的亚型? 还是E也足够了?
在Java类型参数中,是否仅指严格的子类型? 还是E也足够了?
是的, super
和extends
给出了包含的下限和上限。
以下是Angelika Langer的generics常见问题解答 :
什么是有界通配符?
带上限的通配符看起来像
? extends Type
? extends Type
,代表所有类型的族,它们是Type
子Type
, 包括Type
。Type
称为上限 。带下限的通配符看起来像
? super Type
? super Type
和代表类型的所有类型的族,类型包括Type
。Type
称为下限 。
这不严格; E
就足够了。
List extends Animal> animalList=new List(); List extends Animal> animalList=new List();
两行都编译没有任何错误。 以列表作为参数的任何函数都理解列表中的对象是E类型或E的子类型。