Это запрещено, потому что в противном случае вы сможете сделать это.
List<Base> base = new ArrayList<>();
List<Extended> extended = (List<Extended>)base;
base.add(new OtherExtended()); // now you have OtherExtended in List<Extended>.
Вы можете заставить компилятор делать то, что вы хотите, List<ExtendedClass> extendedList = (List<ExtendedClass>)(Object) new LinkedList<BaseClass>();
, но я советую вам этого не делать.
EDIT
Если у вас противоположная ситуация:
List<Extended> extended = new ArrayList<>();
List<Base> base = (List<Base>)base;
вы можете сделать
base.add(new OtherExtended());
и имеют ту же проблему. extended
снова содержит неправильный объект.