Java未绑定通配符泛型
在Java未绑定通配符泛型,java,generics,nested,bounded-wildcard,Java,Generics,Nested,Bounded Wildcard,在Bar类中使用通配符类型泛型比完全跳过它们有什么好处吗 public class Foo<T> {} public interface Bar { public void addFoo(Foo<?> foo); public Foo<?> getFoo(String name); } 公共类Foo{} 公共接口栏{ 公共无效添加Foo(Foo-Foo); 公共Foo getFoo(字符串名称); } 有多种优势 它们不会像使用原始类型那
Bar
类中使用通配符类型泛型比完全跳过它们有什么好处吗
public class Foo<T> {}
public interface Bar {
public void addFoo(Foo<?> foo);
public Foo<?> getFoo(String name);
}
公共类Foo{}
公共接口栏{
公共无效添加Foo(Foo-Foo);
公共Foo getFoo(字符串名称);
}
有多种优势
- 它们不会像使用原始类型那样产生编译器警告
- 它们提供了更多的类型安全性。例如,考虑“<代码> Foo是<代码>列表< /代码>。如果使用
而不是List
,则可以执行以下操作:List
即使该列表只应包含myBar.getFoo("numbers").add("some string");
s。如果您返回了一个Number
,那么您将无法向其中添加任何内容(除了列表
),因为列表的类型未知null
- 它们记录了与原始类型完全不同的内容,即
是在某个未知但特定的类型上键入的Foo