除非通过无界通配符对其进行参数化,否则不允许转换为参数化类型.
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;
要获得相同的,无限制的通配符可以使用.
private static void add(Box<?> box) { Box<Integer> integerBox = (Box<Integer>)box; }