1
を入力します問題は、最初の(ItemContainer)ジェネリックパラメータが2番目の(List)と同じかどうかは不明です。良い解決策は、メソッドにジェネリック下限タイプを定義することができますJavaメソッドは、私が有界型パラメータで、次のクラスを持っている。例えば
public <S super T> void putItems() {
ItemContainer<S> itemContainer = getItemContainer();
List<S> items = getItems();
itemContainer.addItems(items); // ok
}
しかし、意外にも(私のためなど)、そのような構文( slightly unconvincing reason)はありません!
この問題を解決する方法はありますか?私は、(私の場合は)第1と第2のパラメータが同じであると確信していますが、私はそれをJavaに説明する方法はわかりません。
itemContainerとitemsのジェネリック型パラメータは、Tのスーパータイプ(クラスヘッダで定義されている)である必要があるためです。 –
@DenisDorohov:「Tのスーパータイプ」「T」のスーパータイプはありません。 '?スーパーT 'は、 'T'自身、' T'の直接スーパークラス、そのクラスのスーパークラスなど(実装されたインタフェースを含む)など、 'T'のスーパータイプである任意のタイプであることを意味しますオブジェクトに変換する。 – newacct