Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一般下界法_Java_Generics_Lower Bound - Fatal编程技术网

Java 一般下界法

Java 一般下界法,java,generics,lower-bound,Java,Generics,Lower Bound,假设我有以下几类动物,Animal,Fish,和CatFish CatFishextendsFish和FishextendsAnimal 有一个名为MyPets的泛型类,它有一个名为T的类型参数(泛型),将使用上述类的对象对其进行参数化 我的问题是,如何在D中创建一个下限方法,该方法将接受作为CatFish类父类的任何对象。 TL;博士: 类型参数可以有几个边界,比如在类框{…}中。但是类型参数不能有下限,也就是说,不允许类框{…}这样的构造。为什么不呢?答案是:这是毫无意义的,因为如果允许的话

假设我有以下几类动物,
Animal
Fish
,和
CatFish

CatFish
extends
Fish
Fish
extends
Animal

有一个名为
MyPets
的泛型类,它有一个名为
T
的类型参数(泛型),将使用上述类的对象对其进行参数化

我的问题是,如何在
D
中创建一个下限方法,该方法将接受作为
CatFish
类父类的任何对象。

TL;博士:

类型参数可以有几个边界,比如在类框{…}中。但是类型参数不能有下限,也就是说,不允许类框{…}这样的构造。为什么不呢?答案是:这是毫无意义的,因为如果允许的话,它不会给你买任何东西

使用这样的下界泛型是有争议的,不受鼓励。 基本用途:

public void treatAnimalWhichIsCatFishOrSuperType(Animal<? super CatFish> catFishOrParent){
}

public void treatanimalwhichiscatfish或supertype(Animal可能会有帮助。谢谢。我会研究一下。什么是
D
?它很重要,或者这个方法可以在任何地方声明吗?请注意,
?super CatFish
并不是该方法的类型参数,它是该方法(常规)的类型参数的通配符严格来说,类型参数的下限是不允许的,正如其他答案所述。