假設我有以下類別Animal
,Fish
和CatFish
。通用下界方法
CatFish
延伸Fish
和Fish
延伸Animal
。
有一個泛型類MyPets
,它有一個類型參數(泛型)T
,並將用上述類的對象進行參數化。
我的問題是,如何在D
中創建一個下界有界的方法,它將採用CatFish
類的PARENT類的任何對象。
假設我有以下類別Animal
,Fish
和CatFish
。通用下界方法
CatFish
延伸Fish
和Fish
延伸Animal
。
有一個泛型類MyPets
,它有一個類型參數(泛型)T
,並將用上述類的對象進行參數化。
我的問題是,如何在D
中創建一個下界有界的方法,它將採用CatFish
類的PARENT類的任何對象。
TL; DR:
類型參數可以有幾個界限,就像在課堂上盒{...}。但是一個類型參數可以沒有下界,也就是說,不允許像Box {...}這樣的構造。爲什麼不?答案是:這是毫無意義的,因爲它不會給你買任何東西,是否允許。
它只是使用這樣的下界綁定泛型是有爭議的,不鼓勵。 基本使用:
public void treatAnimalWhichIsCatFishOrSuperType(Animal<? super CatFish> catFishOrParent){
}
還有,當你想從這個方法返回一個泛型類型的實例其他替代方案,但你可以發現,在上面的鏈接。
[This](http://stackoverflow.com/questions/8403489/java-generic-methods-super-cant-be-used)可能會有所幫助。 – 2013-03-20 23:08:38
謝謝。我會仔細研究一下。 – 2013-03-20 23:12:30
什麼是'D'?這很重要,還是可以在任何地方聲明這種方法? – 2013-03-21 00:20:55