MyAbstractClass, . : () .
, , , MyAbstractClass. , . , , MyAbstractClass, . . , , , ( List<Cat>, List<BigCat>) - , . , , , . , :
public MyAbstractClass(List<? extends Animal> animalList) {
this.myAnimalList = (List)animalList;
}
MyAbstractClass Animal s, . , , MyAbstractClass. , , , ( Cat Snake Animal, List<Animal - promises, Animal, , ):
public MyAbstractClass(Collection<? extends Animal> animalList) {
this.myAnimalList = new ArrayList<>(animalList);
}
, , :
public List<Animal> getAnimalList()
return Collections.unmodifiableList(myAnimalList);
}
, , ImmutableList Google guava:
public abstract class MyAbstractClass {
private List<Animal> myAnimalList;
public MyAbstractClass(){
this(ImmutableList.of());
}
public MyAbstractClass(Collection<? extends Animal> animalList) {
this.myAnimalList = ImmutableList.copyOf(animalList);
}
public List<Animal> getAnimalList() {
return myAnimalList;
}
}
, , (a) ( Collections.unmodifiableList, ) (b) ImmutableList.copyOf() , , , , a ImmutableList . - (a), getAnimalList() .
BTW: Java , , shedSkin(), ShedSkin() - #.