【问题标题】:Java unbound wildcard genericsJava 未绑定通配符泛型
【发布时间】:2012-02-06 18:04:05
【问题描述】:

Bar 类中使用通配符类型的泛型比完全跳过它们有什么优势吗?

public class Foo<T> {}

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

【问题讨论】:

标签: java generics nested bounded-wildcard


【解决方案1】:

有多种优势。

  • 它们不会像使用原始类型那样产生编译器警告
  • 它们提供了更多的类型安全性。例如,考虑 Foo 是否改为 List。如果您使用List 而不是List&lt;?&gt;,您可以这样做:

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

    即使列表只是假定包含Numbers。如果您返回了 List&lt;?&gt;,那么您将无法向其添加 任何内容null 除外),因为列表的类型未知。

  • 它们记录了与原始类型完全不同的东西,即Foo 是在某些未知但特定类型上键入的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 2020-10-16
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    相关资源
    最近更新 更多