34 lines
1.1 KiB
Java
34 lines
1.1 KiB
Java
// arrays/ArrayOfGenerics.java
|
|
// (c)2017 MindView LLC: see Copyright.txt
|
|
// We make no guarantees that this code is fit for any purpose.
|
|
// Visit http://OnJava8.com for more book information.
|
|
import java.util.*;
|
|
|
|
public class ArrayOfGenerics {
|
|
@SuppressWarnings("unchecked")
|
|
public static void main(String[] args) {
|
|
List<String>[] ls;
|
|
List[] la = new List[10];
|
|
ls = (List<String>[])la; // Unchecked cast
|
|
ls[0] = new ArrayList<>();
|
|
|
|
// -ls[1] = new ArrayList<Integer>();
|
|
// error: incompatible types: ArrayList<Integer>
|
|
// cannot be converted to List<String>
|
|
// ls[1] = new ArrayList<Integer>();
|
|
// ^
|
|
|
|
// The problem: List<String> is a subtype of Object
|
|
Object[] objects = ls; // So assignment is OK
|
|
// Compiles and runs without complaint:
|
|
objects[1] = new ArrayList<>();
|
|
|
|
// However, if your needs are straightforward it is
|
|
// possible to create an array of generics, albeit
|
|
// with an "unchecked cast" warning:
|
|
List<BerylliumSphere>[] spheres =
|
|
(List<BerylliumSphere>[])new List[10];
|
|
Arrays.setAll(spheres, n -> new ArrayList<>());
|
|
}
|
|
}
|