4

クラスでワイルドカードタイプのジェネリックBarを完全にスキップするよりも使用する利点はありますか?

public class Foo<T> {}

public interface Bar {
    public void addFoo(Foo<?> foo);
    public Foo<?> getFoo(String name);
}
4

1 に答える 1

6

複数の利点があります。

  • 生の型を使用するようなコンパイラ警告は生成されません
  • 彼らはより多くの型安全性を与えます。たとえば、代わりにそうFooであったかどうかを検討Listします。Listの代わりに使用した場合は、次のList<?>ように実行できます。

    myBar.getFoo("numbers").add("some string");
    

    リストにsのみが含まれることになっNumberている場合でも。を返した場合、リストのタイプが不明であるため、(を除く)何もList<?>追加できません。null

  • それらは、生のタイプとは完全に異なる何かを文書化します。つまり、未知であるが特定のタイプFooでタイプされます。
于 2012-02-06T18:24:59.337 に答える