0

私はそのような方法を持っています:

<T extends ImportedGroupTxtContact> Importer<T> createImporter(Class<T> classToImport) 

メソッド本体では、これは問題ありません。

ParseResult<? extends ImportedGroupTxtContact, ?> parseResult = new ParseResult<ImportedGroupTxtContact, ChildContactField<?>>();

しかし、これはそうではありません:

ParseResult<T, ?> parseResult = new ParseResult<ImportedGroupTxtContact, ChildContactField<?>>();

T extends ImportedGroupTxtContactと同じ上限があるので、これは私には意味がありません? extends ImportedGroupTxtContact。正確には何が問題なのですか?

4

2 に答える 2

3

T伸びImportedGroupTxtContactます。したがって、 の任意のサブクラスである可能性がありますImportedGroupTxtContact。に置き換えてみましょうFruit。Apple は Fruit を拡張します。しかし、あなたはできません

Basket<Apple> basket = new Basket<Fruit>();

実際、 aBasket<Apple>はリンゴのみを受け入れますが、 aBasket<Fruit>はあらゆる種類のフルーツを受け入れます。

于 2012-08-07T11:21:28.477 に答える
2

が と等しい場合と等しくない場合がある場所にParseResult<A, B>を割り当てているため、これは失敗する必要があります。より正確には、 の任意のサブタイプにすることができます。最初の例のと の両方が同じ上限を持っているという事実は、ここでは方程式に入りません。ParseResult<T, ?>TATAT?

于 2012-08-07T11:19:14.093 に答える