Génériques Java - Pas de diffusion

La conversion en un type paramétré n'est pas autorisée à moins qu'elle ne soit paramétrée par des caractères génériques illimités.

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;

Pour obtenir la même chose, des caractères génériques illimités peuvent être utilisés.

private static void add(Box<?> box) {
   Box<Integer> integerBox = (Box<Integer>)box;
}