Java 未绑定通配符泛型
与完全跳过通配符类型泛型相比,在 Bar 类中使用通配符类型泛型有什么优势吗?
public class Foo<T> {}
public interface Bar {
public void addFoo(Foo<?> foo);
public Foo<?> getFoo(String name);
}
Are there any advantages of using wildcard-type generics in the Bar
class over completely skipping them?
public class Foo<T> {}
public interface Bar {
public void addFoo(Foo<?> foo);
public Foo<?> getFoo(String name);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有多种优点。
它们提供了更多的类型安全性。例如,考虑
Foo
是否为List
。如果您使用List
而不是List
,您可以这样做:即使列表仅应该包含
数字
。如果您返回一个List
,那么您将无法向其中添加任何内容(null
除外),因为列表未知。Foo
是在某些未知但特定的类型上键入的。There are multiple advantages.
They give more type safety. For example, consider if
Foo
wasList
instead. If you usedList
instead ofList<?>
, you could do this:even if the list was only supposed to contain
Number
s. If you returned aList<?>
, then you would not be able to add anything to it (exceptnull
) since the type of list is not known.Foo
is typed on some unknown but specific type.