除非由无界通配符进行参数化,否则不允许转换为参数化类型。
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; }