Map 在Java中意味着什么?
Map
在Java中意味着什么?
我看过网上但似乎找不到任何文章。
编辑:我在MP3 Duration Java上发现了这个
?
表示您不感兴趣的占位符(通配符):
HashMap, ?> foo = new HashMap();
从那以后?
是一个通配符,您可以跳过它并仍然得到相同的结果:
HashMap foo = new HashMap();
但它们可用于指定或子集要使用的generics。 在此示例中,第一个generics必须实现Serializable接口。
// would fail because HttpServletRequest does not implement Serializable HashMap extends Serializable, ?> foo = new HashMap();
但是使用具体类而不是这些通配符总是更好。 你应该只使用?
如果你知道你在做什么:)
Map,?>
表示在编译时,您不知道Map的键类和值对象的类类型是什么。
它是一个通配符类型。 http://download.oracle.com/javase/tutorial/extra/generics/wildcards.html
从Java5开始,Generics就提供了这种语言。 http://download.oracle.com/javase/tutorial/java/generics/index.html
符号表示您正在创建的Map将接受A类对象作为键,B类对象作为值。
这有助于您作为开发人员,因此您不会再将对象强制转换为正确的类。 因此,您将无法使用除A之外的键和除B之外的其他对象的映射。避免丑陋的强制转换并提供编译时约束
Map,?>
告诉您可以在地图中使用每个对象的key
和value
。
但通常使用这样的generics更有用:
Map map
因此,在此映射中,您只能put
String
作为键,将YourCustomObject
作为值。
请参阅有关generics的本教程 。
的? 是generics中的通配符。 太阳……呃…… Oracle在这里有一个关于generics的很好的教程。 有一个关于通配符的单独部分。
如果您在问题中发布了更多上下文,例如您在哪里看到Map, ?>
,您可能会得到更好的答案。