3
我正在阅读为什么Java中的数组协方差不好(Why are arrays covariant but generics are invariant?)。如果Dog
是Animal
的子类型,则Dog[]
是Animal[]
的子类型。这是一个问题,因为可以这样做:Java数组协变违反Liskov替换原则吗?
Animal[] animals = new Dog[1];
animals[0] = new Cat();
这与正确实施的泛型不同。 A List<Dog>
不是List<Animal>
的子类型
我试图理解为什么它不好并且刚刚阅读了LSP的本质。它是否以任何方式违反LSP?似乎没有明显的违规行为。