3

私はJavaジェネリックを最新の状態にしています(JDK 1.4 ... 1.3でもレガシーコードで長い間働いてきました)が、これをよく理解していません:

public class Foo<T extends Bar<? extends Foo<T>>> { ...

Fooとは 2 つのジェネリックBarクラスです。

よく分からないのでどう解釈すればいいですか?

私は Java ジェネリックについて多くのことを読んできましたが、これは少し頭を悩ませます (少なくとも初心者の私にとっては)。

4

1 に答える 1

4

まあ、Fooによってパラメータ化する必要がありますT。それT自体は、 extendsなどBar<U>のタイプに拡張する必要があります。(この場合、「extend」は「と同じ型」を意味します。)ここでは任意の型名として使用しましたが、宣言では名前が付けられていないため、。UUFoo<T>U?

少し気が遠くなるのは確かですが、通常、この種のものが発生する状況では、物事が単純になることになります。具体的な例を挙げていただければ、もう少しわかりやすく説明できるかもしれません。

于 2011-05-06T17:00:17.907 に答える