O tipo de argumento não é contra-variante?

Eu entendo os termos co-variância e contra-variância. Mas há uma pequena coisa que não consigo entender. No curso "Programação Funcional em Scala" no coursera, Martin Ordersky menciona que:

Funções são contravariantes em seus tipos de argumento e co-variantes em seus tipos de retorno

Então, por exemplo, em Java, vamosDog estendeAnimal. E deixe uma função ser:

void getSomething(Animal a){

e eu tenho a chamada de função como

Dog d = new Dog();
getSomething(d)

Então, basicamente, o que está acontecendo é queAnimal a = d. E de acordo comwiki A covariância é "Converter mais para estreito". E acima estamos convertendo de cão para Animal. Portanto, o tipo de argumento não é covariante em vez de contravariante?

questionAnswers(4)

yourAnswerToTheQuestion