Java未绑定的通配符泛型

时间:2012-02-06 18:04:05

标签: java generics nested bounded-wildcard

Bar类中使用通配符类型泛型相比完全跳过它们有什么好处吗?

public class Foo<T> {}

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

1 个答案:

答案 0 :(得分:6)

有许多优点。

  • 他们不会产生编译器警告,例如使用原始类型
  • 它们提供更多类型的安全性。例如,考虑Foo是否为List。如果您使用List代替List<?>,则可以执行此操作:

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

    即使列表只是假设包含Number s。如果您返回List<?>,那么您将无法向其添加任何null除外),因为列表类型未知。

    < / LI>
  • 他们记录的内容与原始类型完全不同,即在某些未知但特定类型上键入Foo