【发布时间】: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
在Bar 类中使用通配符类型的泛型比完全跳过它们有什么优势吗?
public class Foo<T> {}
public interface Bar {
public void addFoo(Foo<?> foo);
public Foo<?> getFoo(String name);
}
【问题讨论】:
标签: java generics nested bounded-wildcard
有多种优势。
它们提供了更多的类型安全性。例如,考虑 Foo 是否改为 List。如果您使用List 而不是List<?>,您可以这样做:
myBar.getFoo("numbers").add("some string");
即使列表只是假定包含Numbers。如果您返回了 List<?>,那么您将无法向其添加 任何内容(null 除外),因为列表的类型未知。
Foo 是在某些未知但特定类型上键入的。【讨论】: