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) { ...}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)