有什么区别?Java泛型中的对象和对象?

有什么区别?Java泛型中的对象和对象?,第1张

有什么区别?Java泛型中的对象和对象?

HashMap<String, String>
匹配项的实例,
Map<String, ?>
但不是
Map<String, Object>
。假设你要编写一个接受
Strings
到任何内容的映射的方法:如果你要编写

public void foobar(Map<String, Object> ms) {    ...}

你无法提供

HashMap<String, String>
。如果你写

public void foobar(Map<String, ?> ms) {    ...}

有用!

在Java泛型中有时会被误解的一件事是它

List<String>
不是的子类型
List<Object>
。(但
String[]
实际上是的子类型
Object[]
,这是泛型和数组不能很好混合的原因之一。(Java中的数组是协变的,泛型不是,它们是不变的))。

示例:如果你想编写一个接受

List
的的的
InputStreams
和的子类型的方法InputStream,则可以编写

public void foobar(List<? extends InputStream> ms) {    ...}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5109470.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存