¿Se puede aplicar Collections.unmodified a Collections.EMPTY_MAP?
Frecuentes
Visto 5,045 veces
0
private final Map q;
public Info()
{
this(Collections.EMPTY_MAP);
}
public Info(final Map q)
{
this.qualifiers = new HashMap(q);
}
public Map getQ()
{
return Collections.unmodifiableMap(q);
}
¿Necesito usar Collections.unmodifiableMap() porque vi en JAVA Docs de EMPTY_MAP que es inmutable?
2 Respuestas
2
EMPTY_MAP es inmutable pero aún necesita usar Collections.unmodifiableMap(q)
if Info
ha sido instanciado con un mapa que no es EMPTY_MAP, usando el segundo constructor...
respondido 09 mar '12, 15:03
0
No. Debe usar Collections.unmodifiableMap() si desea asegurarse de que los clientes de su clase nunca modifiquen su representación interna, o más bien, si desea asegurarse de que se produzca una falla si un cliente intenta hacerlo alguna vez.
En el caso de que el mapa interno q
is Collections.EMPTY_MAP
entonces no necesitarías envolverlo en una llamada a Collections.unmodifiableMap
porque ya es inmodificable. Sin embargo, tienes un constructor alternativo que crea q
como un mapa modificable y, en ese caso, deberá protegerlo antes de devolverlo.
También puede simplemente devolver una copia de q
en cuyo caso los clientes podrían modificar el objeto devuelto sin modificar el estado interno de su clase ni generar una excepción.
respondido 09 mar '12, 15:03
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java collections or haz tu propia pregunta.
Si el Javadoc lo dice, entonces es verdad. - skaffman