类型系统与动态检查

时间:2019-06-11 17:57:39

标签: java type-systems

我正在研究类型系统,并且遇到了以下练习:

interface Food{}

interface Plant extends Food{
    void photosyntes();
}

interface Animal extends Food{
    void eat(Food food);
}
     
      
  • 我们想实现接口Carnivore,并扩展Animal。其eat方法将仅接受Animal的实例。此限制应由类型系统而不是动态检查强制实施。用上面的接口解释为什么不能做到这一点。

  •   
  • 在Java中,数组类型Animal[]Food[]的子类型。通常,如果S是T的子类型,则S []是T []的子类型。此规则要求在每个数组存储区执行运行时类型检查。描述一种情况,如果不执行此运行时检查,则Animal[]数组可能包含Plant。用Java代码进行说明。

  •   

我的直觉是,这个问题与协方差和协方差有关,但是我无法给出详尽的解释。

是因为必须使用类而不是接口?可以使用其他接口系统允许吗?

0 个答案:

没有答案