Java 一般下界法
假设我有以下几类动物,Java 一般下界法,java,generics,lower-bound,Java,Generics,Lower Bound,假设我有以下几类动物,Animal,Fish,和CatFish CatFishextendsFish和FishextendsAnimal 有一个名为MyPets的泛型类,它有一个名为T的类型参数(泛型),将使用上述类的对象对其进行参数化 我的问题是,如何在D中创建一个下限方法,该方法将接受作为CatFish类父类的任何对象。 TL;博士: 类型参数可以有几个边界,比如在类框{…}中。但是类型参数不能有下限,也就是说,不允许类框{…}这样的构造。为什么不呢?答案是:这是毫无意义的,因为如果允许的话
Animal
,Fish
,和CatFish
CatFish
extendsFish
和Fish
extendsAnimal
有一个名为MyPets
的泛型类,它有一个名为T
的类型参数(泛型),将使用上述类的对象对其进行参数化
我的问题是,如何在D
中创建一个下限方法,该方法将接受作为CatFish
类父类的任何对象。
TL;博士:
类型参数可以有几个边界,比如在类框{…}中。但是类型参数不能有下限,也就是说,不允许类框{…}这样的构造。为什么不呢?答案是:这是毫无意义的,因为如果允许的话,它不会给你买任何东西
使用这样的下界泛型是有争议的,不受鼓励。
基本用途:
public void treatAnimalWhichIsCatFishOrSuperType(Animal<? super CatFish> catFishOrParent){
}
public void treatanimalwhichiscatfish或supertype(Animal可能会有帮助。谢谢。我会研究一下。什么是D
?它很重要,或者这个方法可以在任何地方声明吗?请注意,?super CatFish
并不是该方法的类型参数,它是该方法(常规)的类型参数的通配符严格来说,类型参数的下限是不允许的,正如其他答案所述。