List
of を受け取って反復処理する必要があるメソッドを Java で作成していSerializable
ます。
次の違いは何ですか:
public void myMethod(List<Serializable> list) {
}
と
public void myMethod(List<? extends Serializable> list) {
}
List
of を受け取って反復処理する必要があるメソッドを Java で作成していSerializable
ます。
次の違いは何ですか:
public void myMethod(List<Serializable> list) {
}
と
public void myMethod(List<? extends Serializable> list) {
}
List<? extends Serializable>
は、呼び出し元が の任意のサブタイプのリストを渡すことを許可しSerializable
ます。これは一般に、正確なタイプの一致を要求するよりも柔軟性があります。
ただし、extendsワイルドカードを使用するList<E>
と、実行できる操作が制限されることに注意してください。具体的には、バインドされたジェネリック パラメーターを含むパラメーター型を持つインスタンス メソッドを呼び出すことができなくなります。たとえば、(ワイルドカードでバインドした)list.add(E)
パラメータ タイプがあるため呼び出すことはできませんが、 を呼び出すことはできます。E
get(int)
extendsワイルドカードを使用したコレクションの経験則では、コレクションから値を引き出すことはできますが、値を に入れることはできません。リストから読み取るだけの場合は、ワイルドカードを使用する必要があります。