Array types (Animal[] animals) are checked at runtime, but collection type (ArrayList<Animal>) checks happen only when you compile(runtime就不再查了).
可以用wildcards的形式,
public void test (ArrayList<? extends Animal> list)
public <T extends Animal> void test (Arraylist<T> list)
但这样就不能再往ArrayList里面添加东西了
可以用wildcards的形式,
public void test (ArrayList<? extends Animal> list)
public <T extends Animal> void test (Arraylist<T> list)
但这样就不能再往ArrayList里面添加东西了