Cannot create an array of LinkedLists in Java...?

arrays, generics, java

Solution

You can't use generic array creation. It's a flaw/ feature of java generics.

The ways without warnings are:

Using List of Lists instead of Array of Lists:

List< List<IntegerNode>> nodeLists = new LinkedList< List< IntegerNode >>();

Declaring the special class for Array of Lists:

class IntegerNodeList {
    private final List< IntegerNode > nodes;
}

Problem

I'm working on a sparse matrix class that needs to use an array of `LinkedList` to store the values of a matrix. Each element of the array (i.e. each `LinkedList`) represents a row of the matrix. And, each element in the `LinkedList` array represents a column and the stored value. In my class, I have a declaration of the array as: ``` private LinkedList<IntegerNode>[] myMatrix; ``` And, in my constructor for the `SparseMatrix`, I try to define: ``` myMatrix = new LinkedList<IntegerNode>[numRows]; ``` The error I end up getting is Cannot create a generic array of `LinkedList<IntegerNode>`. So, I have two issues with this: - What am I doing wrong, and - Why is the type acceptable in the declaration for the array if it can't be created? `IntegerNode` is a class that I have created. And, all of my class files are packaged together.

Original source