Ну, не вызывайте метод, который изменил бы его.Что бы вы ожидали от такого метода без копирования?Он должен либо вести себя по-другому (например, ничего не делать, когда вызывается add
), либо выдавать исключение.Вы можете заставить его генерировать исключение, поместив его в неизменяемый список ... но если целью метода является изменение коллекции, вы, вероятно, не хотите, чтобы было сгенерировано исключение ...
Я знаю, что это звучит как банальный ответ, но я надеюсь, что он действительно доходит до сути того, о чем вы должны подумать: если у вас есть коллекция, которую не следует изменять, и вы хотитеЧтобы вызвать метод, который пытается изменить коллекцию, вы должны подумать, почему вы хотите вызвать этот метод в первую очередь.
Я понимаю, что сложная часть - это знать, какие методы будут измените коллекцию - и здесь вы можете либо создать защитную оболочку, которую нельзя изменить, либо убедиться, что все соответствующие методы задокументированы правильно.