我正在研究一个稀疏矩阵类,该类需要使用数组LinkedList来存储矩阵的值。数组的每个元素(即每个LinkedList)代表矩阵的一行。并且,LinkedList数组中的每个元素代表一列和存储的值。
LinkedList
在我的课程中,我将数组声明为:
private LinkedList<IntegerNode>[] myMatrix;
并且,在的构造函数中SparseMatrix,我尝试定义:
myMatrix = new LinkedList<IntegerNode>[numRows];
我最终得到的错误是
无法创建的通用数组LinkedList<IntegerNode>。
LinkedList<IntegerNode>。
因此,我有两个问题:
IntegerNode是我创建的课程。而且,我所有的类文件都打包在一起。
IntegerNode
你不能使用通用数组创建。这是Java泛型的缺陷/功能。
没有警告的方式是:
List< List<IntegerNode>> nodeLists = new LinkedList< List< IntegerNode >>();
class IntegerNodeList { private final List< IntegerNode > nodes; }
由于某种原因,你必须转换类型并进行如下声明:
myMatrix = (LinkedList<IntegerNode>[]) new LinkedList<?>[numRows];