2012-03-14 73 views
1

我正在通过这个软件库来查找java中的语义规范。作为参数的接口

用于实现DivRank此特定代码具有采用一个称为稀疏矩阵参数的方法:http://code.google.com/p/airhead-research/source/browse/branches/matrix-rank/src/edu/ucla/sspace/matrix/DivRank.java?spec=svn1277&r=1277

包中的文件说,稀疏矩阵是一个接口: http://airhead-research.googlecode.com/svn/trunk/javadoc/1.7/edu/ucla/sspace/matrix/SparseMatrix.html

我的目标是注入值我有一个双[] []到这个参数。

SparseMatrix实现了另一个名为Matrix的接口,该接口具有setRow和setColumn函数。当我尝试将它与我所做的接口的对象一起使用时,我得到了NullPointException。我认为这是因为我没有SparseMatrix接口的实例。

然后我意识到,我不得不使用一个实现该接口并传递该类对象的类。但是文档没有显示任何适合我需要的简单类。

我是否需要定义一个实现此接口的新类,并覆盖接口函数并使用该对象传递我的值?

+0

是的,你可以实现SparseMatrix。看起来你有一个完整的矩阵('double [] []')而不是一个稀疏矩阵,我怀疑存在一个具有'double [] []'构造函数的SparseMatrix实现类。 – 2012-03-14 18:04:32

回答

0

我没有看过细节,但在javadoc(你的第二个链接)上,有一个名为“所有已知的实现类”的列表。你可以检查它们,我相信你会找到一个具体的类(即不是一个接口或一个抽象类),并且做你需要的。例如,SparseHashMatrix有一个set(row, col, value)方法,您可以使用该方法通过循环从double[][]填充矩阵。

+0

感谢您的发现。在那个说明中,检索值的函数getRowVector()应该返回一个SparseDoubleVector,它是一个接口。我可以收集什么值?我试过的一个实现类SparseHashDoubeVector给了我一个不兼容的类型错误! – rook 2012-03-14 18:24:03

+0

你可以按原样使用它。 'SparseDoubleVector vector = matrix.getRowVector(0);'然后你可以使用它的方法而不用担心实现,例如:'double firstCell = vector.get(0);' – assylias 2012-03-14 18:43:14

+0

谢谢!工作。但是,为什么区别?接口的对象足以收集,但不足以发送。 – rook 2012-03-14 18:52:34