假设我有以下课程Animal
,Fish
和CatFish
.
CatFish
延伸Fish
和Fish
延伸Animal
。
有一个名为 的泛型类MyPets
,它有一个名为 的类型参数(泛型)T
,它将使用上述类的对象进行参数化。
我的问题是,我如何创建一个下界方法,D
该方法将采用该类的父类的任何对象CatFish
。
假设我有以下课程Animal
,Fish
和CatFish
.
CatFish
延伸Fish
和Fish
延伸Animal
。
有一个名为 的泛型类MyPets
,它有一个名为 的类型参数(泛型)T
,它将使用上述类的对象进行参数化。
我的问题是,我如何创建一个下界方法,D
该方法将采用该类的父类的任何对象CatFish
。
你不能。
TL;博士:
类型参数可以有多个界限,例如在类 Box {...} 中。但是类型参数不能有下限,也就是说,类 Box {...} 之类的构造是不允许的。为什么不?答案是:这是没有意义的,因为如果允许的话,它不会给你买任何东西。
你可以。
它只是使用这种下界泛型是有争议的,不被鼓励。基本用途:
public void treatAnimalWhichIsCatFishOrSuperType(Animal<? super CatFish> catFishOrParent){
}
当您想从此方法返回泛型类型的实例时,还有其他选择,但您可以在上面的链接中找到。