Нет.Вам нужно использовать Collections.unmodifiableMap (), если вы хотите, чтобы клиенты вашего класса никогда не изменяли его внутреннее представление, или, скорее, если вы хотите, чтобы сбой происходил, если клиент когда-либо пытается это сделать.
В случае, когда внутренняя карта q
равна Collections.EMPTY_MAP
, вам не нужно заключать ее в вызов к Collections.unmodifiableMap
, потому что она уже не поддается изменению.Однако у вас есть альтернативный конструктор, который создает q
в качестве изменяемой карты, и в этом случае вам нужно будет защитить ее перед возвратом.
Вы также можете просто вернуть копию q
, в которойклиенты case могут изменять возвращаемый объект, не изменяя внутреннего состояния вашего класса и не вызывая исключение.