Can I create an array whose component type is a wildcard parameterized type? No, because it is not type-safe. The rationale is the same as for concrete parameterized types: a wildcard parameterized type, unless it is an unbounded wildcard parameterized type, is a non-reifiable type and arrays of non-reifiable types are not type-safe. The array store check cannot be performed reliably because a wildcard parameterized type that is not an unbounded wildcard parameterized type has a non-exact runtime type. Example (of the consequences): Object numPairArr = new Pair<? extends Number,? extends Number>; // illegal numPairArr = new Pair<Long,Long>(0L,0L); // fine numPairArr = new Pair<String,String>("",""); // should fail, but would succeed The array store check would have to check whether the pair added to the array is of type Pair<? extends Number,? extends Number> or of a subtype thereof. Obviously, a Pair<String,String> is not of a matching type and should be rejected with an ArrayStoreException. But the array store check does not detect any type mismatch, because the JVM can only check the array's runtime component type, which is Pair after type erasure, against the element's runtime type, which is Pair after type erasure.