Преобразование в параметризованный тип не допускается, если оно не параметризовано неограниченными подстановочными знаками.
Box<Integer> integerBox = new Box<Integer>(); Box<Number> numberBox = new Box<Number>(); //Compiler Error: Cannot cast from Box<Number> to Box<Integer> integerBox = (Box<Integer>)numberBox;
Чтобы достичь того же, можно использовать неограниченные символы подстановки.