Java-generics-no-cast

提供:Dev Guides
移動先:案内検索

Javaジェネリック-キャストなし

パラメータ化された型へのキャストは、無制限のワイルドカードによってパラメータ化されない限り許可されません。

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;
}