2012-03-14 72 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