¿Se puede aplicar Collections.unmodified a Collections.EMPTY_MAP?

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?

preguntado el 09 de marzo de 12 a las 15:03

Si el Javadoc lo dice, entonces es verdad. -

2 Respuestas

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

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 or haz tu propia pregunta.