相关疑难解决方法(0)

逆变方法参数类型

wiki Contravariant_method_argument_type表示重写方法将子类型规则作为函数类型,但除了一个支持逆变量参数类型外没有其他语言.我也无法想出使用它的任何好处.

例:

class AnimalShelter {
    Animal getAnimalForAdoption() {      ...        }         
    void putAnimal(Animal animal) {      ...        }   
}

class CatShelter extends AnimalShelter {
    ?Overriding        
    Cat getAnimalForAdoption() {  return new Cat();    }        
    ?Overriding                    
    void putAnimal(Object animal) {      …        }     
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 反变方法的逆变参数类型是否有用?如果是的话,它在哪里?
  2. 方法是一个功能吗?为什么Scala对函数类型和覆盖方法类型有不同的规则?

java scala covariance contravariance subtyping

4
推荐指数
1
解决办法
838
查看次数

标签 统计

contravariance ×1

covariance ×1

java ×1

scala ×1

subtyping ×1