¿Qué significa Map<?, ?>
en Java?
He buscado en línea pero no puedo encontrar ningún artículo sobre él.¿Qué significa Map <?, ?> en Java?
editar: He encontrado esto en MP3 Duration Java
¿Qué significa Map<?, ?>
en Java?
He buscado en línea pero no puedo encontrar ningún artículo sobre él.¿Qué significa Map <?, ?> en Java?
editar: He encontrado esto en MP3 Duration Java
?
indica un marcador de posición en cuyo valor no está interesado en (comodín):
HashMap<?, ?> foo = new HashMap<Integer, String>();
Y puesto ?
es un comodín, puede evitarlo y todavía obtener el mismo resultado:
HashMap foo = new HashMap<Integer, String>();
Pero se pueden usar para especificar o subconjuntar los genéricos que se utilizarán. En este ejemplo, el primer genérico debe implementar la interfaz Serializable.
// would fail because HttpServletRequest does not implement Serializable
HashMap<? extends Serializable, ?> foo = new HashMap<HttpServletRequest, String>();
Pero siempre es mejor usar clases concretas en lugar de estos comodines. Solo debe usar ?
si sabe lo que está haciendo :)
¡El tipo Raw no es el mismo resultado que un comodín! ¡De ningún modo! – Affe
¿De verdad? Yo no sabía eso. ¿Cómo difieren estos dos primeros casos el uno del otro? – mana
El comodín significa 'Este es un mapa que tiene algún tipo específico de cosa restringida, pero no sé lo que es'. El tipo sin procesar es solo el tipo sin procesar, no se conoce nada, no hay restricciones, puede haber algo allí. El compilador no le permitirá agregar elementos a un Mapa ,?>, pero puede colocar lo que desee en un Mapa sin formato. – Affe
Map<?,?>
significa que en tiempo de compilación, que no sabe qué tipo de clase del objeto clave y el valor del mapa va a ser.
Es un tipo de comodín. http://download.oracle.com/javase/tutorial/extra/generics/wildcards.html
Disculpe, no soy tan bueno con los genéricos, pero ¿cuáles son las diferencias entre 'Map ,?>' y 'Map
'ClassName
me encontré con este artículo que explains wildcard parametrization of generics
+1 para el enlace – powerMicha
La documentación de Angelika es donde todos terminan cuando intentan encontrar genéricos. – SteveD
Desde Java5, Generics se proporcionan con el lenguaje. http://download.oracle.com/javase/tutorial/java/generics/index.html
La notación significa que el Mapa que está creando aceptará un objeto de clase A como clave y un objeto de clase B como valor.
Esto lo ayuda como desarrollador para que no pueda lanzar más objetos a la clase correcta. Por lo que no será capaz de utilizar el mapa con claves distintas de A y objetos que no sean B. Evitar los moldes feas y proporcionando compilar las limitaciones de tiempo
Map<?,?>
le dice que usted puede utilizar cada objeto para key
y value
en su mapa.
Pero por lo general es más útil el uso de los genéricos así:
Map<String, YourCustomObject> map
Así que en este mapa, sólo put
un String
como clave y como YourCustomObject
valor puede.
Ver esto tutorial en genéricos.
¿El? es el comodín en genéricos. Sun ... er ... Oracle tiene un buen tutorial sobre genéricos here. Hay una sección separada sobre comodines.
Probablemente obtendrías una mejor respuesta si publicaras más contexto para tu pregunta, como dónde viste Map<?, ?>
.
'Map' as in the _collection_? o la parte ', ?>', como en _generics_? ¿Has mirado el javadoc? – c00kiemon5ter
bien, yo definitivamente estoy hablando de genéricos y comodines. La parte '<' estaba oculta en la pregunta; interpretado como html. Edité la pregunta. – c00kiemon5ter
@ C00k - es posible que desee volver a editar la pregunta, el ', ?>' no se muestra. – Paul