2014-06-15 37 views

回答

4

读到它在甲骨文的Java教程 - 关于限制仿制药

Cannot Create Arrays of Parameterized Types


从上面的教程

直接在那里进行了详细解释:

不能创建的参数数组类型。例如,下面的代码无法编译:

List<Integer>[] arrayOfLists = new List<Integer>[2]; // compile-time error 

下面的代码说明当不同类型的被插入到一个数组会发生什么:

Object[] strings = new String[2]; 
strings[0] = "hi"; // OK 
strings[1] = 100; // An ArrayStoreException is thrown. 

如果你尝试用一个通用的列表一样的东西,会有一个问题:

Object[] stringLists = new List<String>[]; // compiler error, but pretend it's allowed 
stringLists[0] = new ArrayList<String>(); // OK 
stringLists[1] = new ArrayList<Integer>(); // An ArrayStoreException should be thrown, 
              // but the runtime can't detect it. 

如果参数列表中的数组被允许,上面的代码将无法抛出所需ArrayStoreException

+0

现货。更多细节:ArrayStoreException在运行时被抛出。由于类型擦除,java运行时不知道泛型,所以它不能区分'ArrayList '和'ArrayList '。它们看起来都像普通的'ArrayList'。 –