2012-03-14 8 views
1

私はJavaの意味論的仕様のためにこのソフトウェアライブラリを使っていました。パラメータとしてのインタフェース

DivRankを実装するためのこの特定のコードは疎行列と呼ばれるパラメータを取る方法があります。 http://airhead-research.googlecode.com/svn/trunk/javadoc/1.7/edu/ucla/sspace/matrix/SparseMatrix.html

私の目的は、注入することである:パッケージ内http://code.google.com/p/airhead-research/source/browse/branches/matrix-rank/src/edu/ucla/sspace/matrix/DivRank.java?spec=svn1277&r=1277

ドキュメントは疎行列がインターフェイスであることを述べています私はdouble [] []でこの値を持っています。

疎行列はsetRowとSetColumn関数の機能を持つ行列と呼ばれる別のインターフェイスを実装します。私が作成したインタフェースのオブジェクトでそれを使用しようとしたとき、NullPointExceptionが発生しました。 SparseMatrixインターフェイスのインスタンスがないためだと思います。

私は、そのインターフェイスを実装したクラスを使用してクラスオブジェクトを渡す必要があることを認識しました。しかし、私の必要性に合った簡単なクラスはドキュメントには表示されません。

は、私はこのインタフェースを実装する新しいクラスを定義し、また、インターフェース機能を無効にして、私の値を渡すためにオブジェクトを使用する必要がありますか?

+0

はい、SparseMatrixを実装できます。あなたは完全な行列( 'double [] []')を持ち、疎な行列ではないようですが、 'double [] []'コンストラクタを持つSparseMatrixの実装クラスが存在するのではないでしょうか。 –

答えて

0

私は詳細に見ていないが、javadocの(2番目のリンク)上で、「既知の実装クラス」と呼ばれるリストがあります。あなたはそれらをチェックすることができます。具体的なクラス(つまり、インターフェースや抽象クラスではない)が見つかり、必要なものを見つけます。たとえば、SparseHashMatrixにはset(row, col, value)メソッドがあり、これを使用してdouble[][]の行列をループで埋め込むことができます。

+0

見つけてくれてありがとう。このメモでは、値getRowVector()を再度取得する関数は、インタフェースであるSparseDoubleVectorを返す必要があります。どのように値を集めることができますか?私が試した実装クラス、SparseHashDoubeVectorは、私に互換性のない型エラーを与えています! – rook

+0

そのまま使用することができます。 'SparseDoubleVector vector = matrix.getRowVector(0);'を呼び出すと、その実装を心配することなくメソッドを使うことができます。 'double firstCell = vector.get(0);' – assylias

+0

ありがとう!働いた。しかし、違いはなぜですか?インタフェースのオブジェクトは収集するのに十分ですが、送信するには十分ではありません。 – rook

関連する問題