1

だから、Javaでベクトル(つまり数学的なもの)を取得するために、ここの誰かが思慮深くそれを指摘した後、私はJavaライブラリ(JScience)を調べています。

残念ながら、私はこれまでの人生で次のようなものを見たことがありません。

public static <F extends Field<F>> DenseVector<F> valueOf(F... elements)

DenseVector クラスで呼び出すことができるメソッドとして。それは一体何の意味ですか。" " を返して<F extends Field<F>>いますか (そうであれば、なぜ Eclipse はそれを入力と見なすのでしょうか?)

http://jscience.org/api/org/jscience/mathematics/vector/DenseVector.html#valueOf(F...)

それは本当に私を混乱させます。new DenseVector()スーパークラスだけがそれを持っていて、それが保護されているため、私は作ることができませんDenseVector.valueOf()

オブジェクト (またはそのようなもの) をインスタンス化しようとするときにメソッドをインスタンス化する必要がある人を見てきました...そのようなものですか (またはそれですか?)) API は私に何をさせようとしていますか?

私は学校で Java を学んでいて (そして仕事で Java を少し使っていましたが、Java 以外にも多くの異なるものを使用しています)、このようなものに遭遇したことがないことに少し混乱しています。何のために?私に何をさせようとしているのですか?それは新しいですか?年?曖昧?

-ジェニー

4

4 に答える 4

4

次のように、このメソッドを呼び出してベクトルを作成できるはずです。

Real r1 = Real.ONE, r2 = Real.valueOf(2D), r3 = Real.ZERO;
DenseVector<Real> v = valueOf(r1, r2, r3);

この例では、型引数FRealです。はを実装しているためReal、制約 " " に従います。extends Field<F>Field<Real>

さまざまなアプリケーションでは、さまざまなフィールドが使用される可能性があります。たとえば、セキュリティ アプリケーションがこのModuloIntegerフィールドを使用する場合があります。これは、物理学で話されるような「ベクトル場」ではなく、数学的な場であるため、少し混乱します。

型変数を使用することにより、このライブラリは、特定のフィールド内ですべての操作を確実に実行するのに役立ちます。たとえば、上記vのように宣言されてDenseVector<Real>いる場合、それを数値で乗算しようとすると、コンパイラはエラーを出しますComplex

于 2009-10-27T19:57:44.707 に答える
3

これは一般的な戻り値の型です。Java Generics のチュートリアルについては、こちらを参照してください。

于 2009-10-27T19:45:28.897 に答える
1
public static <F extends Field<F>> DenseVector<F> valueOf(F... elements)

これを分解しましょう:

public static

そのパブリック静的メソッド。

<F extends Field<F>>

F が Field の拡張である任意のクラス F のジェネリック メソッド

DenseVector<F>

F の (ジェネリック) DenseVector を返します。

valueOf(F... elements)

パラメータが 0 個以上の F である valueOf という名前のメソッド。

于 2009-10-27T20:38:54.373 に答える