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