1

Listof を受け取って反復処理する必要があるメソッドを Java で作成していSerializableます。
次の違いは何ですか:

public void myMethod(List<Serializable> list) {

}

public void myMethod(List<? extends Serializable> list) {

}


4

3 に答える 3

1

List<? extends Serializable>は、呼び出し元が の任意のサブタイプのリストを渡すことを許可しSerializableます。これは一般に、正確なタイプの一致を要求するよりも柔軟性があります。

ただし、extendsワイルドカードを使用するList<E>と、実行できる操作が制限されることに注意してください。具体的には、バインドされたジェネリック パラメーターを含むパラメーター型を持つインスタンス メソッドを呼び出すことができなくなります。たとえば、(ワイルドカードでバインドした)list.add(E)パラメータ タイプがあるため呼び出すことはできませんが、 を呼び出すことはできます。Eget(int)

extendsワイルドカードを使用したコレクションの経験則では、コレクションから値を引き出すことはできますが、値を に入れることはできません。リストから読み取るだけの場合は、ワイルドカードを使用する必要があります。

于 2013-11-04T17:21:43.070 に答える