クラスでワイルドカードタイプのジェネリックBar
を完全にスキップするよりも使用する利点はありますか?
public class Foo<T> {}
public interface Bar {
public void addFoo(Foo<?> foo);
public Foo<?> getFoo(String name);
}
クラスでワイルドカードタイプのジェネリックBar
を完全にスキップするよりも使用する利点はありますか?
public class Foo<T> {}
public interface Bar {
public void addFoo(Foo<?> foo);
public Foo<?> getFoo(String name);
}
複数の利点があります。
彼らはより多くの型安全性を与えます。たとえば、代わりにそうFoo
であったかどうかを検討List
します。List
の代わりに使用した場合は、次のList<?>
ように実行できます。
myBar.getFoo("numbers").add("some string");
リストにsのみが含まれることになっNumber
ている場合でも。を返した場合、リストのタイプが不明であるため、(を除く)何もList<?>
追加できません。null
Foo
でタイプされます。