我剛剛在我的編程語言課上學到「逆變參數類型實際上是安全的,但它們沒有被發現有用,因此在實際語言中不被支持。」即使他們不支持,我很困惑,爲什麼這樣的例子中,我們分別給予仍然是,從理論上講,「安全」:爲什麼這些逆變參數類型被認爲是安全的?
class Animal {
...
public bool compare(Panda) { ... }
}
class Panda extends Animal {
...
public bool compare(Animal) { ... }
}
據我瞭解,與子類型的問題上來,當東西這樣做會導致特異性的喪失。那麼,如果我這樣做呢? :
Panda p = new Panda();
Animal a = new Animal
...
p.compare(a);
當我看着這個,看起來像熊貓可能(可能確實)有一些額外的領域,普通的動物不知道。因此,即使他們所有的動物特定數據成員都是相同的,熊貓也可以有其他不同的東西。如何將它與一個普通的動物相比較呢?它會只考慮動物的東西,而忽略其餘的東西嗎?