5

Javaコードを読んで理解しようとしています。ここにあります:

protected LoadTarget<? super PopulationLoadContext> createTarget(PopulationLoadContext context) {
    return createTransactionalTargetGroup(RiskScoresTables.All_Tables);
}

とは<? super PopulationLoadContext>どういう意味ですか?

4

3 に答える 3

1

それは何ですか?

rgettman が述べたように、これはLoadTarget型引数が下限のワイルドカードに設定されたジェネリック型です。

それは何を許可しますか?

実行時に、型引数が先祖LoadTargetである同じ型の値で変数を置き換える (設定する) ことができます。PopulationLoadContext

なんで?

柔軟性を確保するために、異なるインスタンス化された型のファミリを相互に置き換えて正常に動作させることができます。内LoadTargetでは、型パラメーターは、メソッド パラメーター (入力) または内部的にインスタンス化されたジェネリック型の型の上限に使用されます。このような場合、元のタイプの代わりに幅広いタイプを使用できます。ジェネリック型は、その型パラメーターと反変性を持つと言われています

于 2013-07-24T22:50:09.193 に答える
1

より一般的に (Java だけでなく)、全体像を把握したい場合は、共分散/反分散とも呼ばれます: http://en.wikipedia.org/wiki/Covariance_and_contravariance_%28computer_science%29 Java セクションを参照:

「 a が与えられたList<? extends Foo>場合、要素を取得して安全にFoo型に割り当てることができます (共変性)。 a が与えられたList<? super Foo>場合、Fooオブジェクトを要素として安全に追加できます (変性) 。」

于 2013-07-24T23:13:52.987 に答える