ТИПЫ НЕИЗМЕНЯЕМЫХ ОБЪЕКТОВ

1. Компьютерно-реализуемый способ обеспечения того, что множество экземпляров типа объекта являются неизменяемыми, содержащий этапы, на которых:
осуществляют доступ к объявлению того, что тип объекта является неизменяемым; и
в ответ на это объявление, выполняют следующие этапы, на которых:
автоматически формулируют машиноисполняемые команды с тем, чтобы каждый экземпляр этого типа объекта был классифицирован как неизменяемый;
автоматически формулируют машиноисполняемые команды с тем, чтобы все прямо или косвенно доступные элементы этого экземпляра упомянутого типа объекта были классифицированы как неизменяемые; и
автоматически формулируют машиноисполняемые команды с тем, чтобы существование любой ссылки, которая позволяет выполнять присвоение полей данного экземпляра упомянутого типа объекта, не допускалось после момента, в который упомянутый экземпляр становится доступным создателю этого экземпляра.
2. Компьютерно-реализуемый способ по п. 1, в котором по меньшей мере один экземпляр неизменяемого типа объекта принимает одно или более перезаписываемых входных значений.
3. Компьютерно-реализуемый способ по п. 2, в котором ни одно из упомянутых одного или более перезаписываемых входных значений не сохраняется в поле какого-либо из упомянутого по меньшей мере одного экземпляра.
4. Компьютерно-реализуемый способ по п. 1, в котором один или более элементов экземпляра ссылки включает в себя разрешение, которое не является разрешением «неизменяемый».
5. Компьютерно-реализуемый способ по п. 4, дополнительно содержащий игнорирование упомянутого разрешения, при условии, что сам тип объекта классифицирован как неизменяемый.
6. Компьютерно-реализуемый способ по п. 1, в котором нет никакого механизма, чтобы сделать какой-либо из экземпляров типа объекта изменяемым.
7. Компьютерно-реализуемый способ по п. 1, в котором ссылка, которая позволяет выполнять присвоение полей, является ссылкой «this» конструктора экземпляров, который создает экземпляры типа объекта.
8. Компьютерно-реализуемый способ по п. 1, в котором совокупность из одного или более действий, которые могут быть выполнены в отношении ссылки, которая позволяет выполнять присвоение полей, ограничена таким образом, чтобы ссылка не сохранялась в виде поля.
9. Компьютерно-реализуемый способ по п. 1, в котором упомянутая совокупность из одного или более действий включает в себя чтение и запись.
10. Компьютерный программный продукт, содержащий один или более машиночитаемых носителей данных, на которых имеются машиноисполняемые команды, которые при их исполнении одним или более процессорами вычислительной системы предписывают вычислительной системе выполнять способ обеспечения того, что множество экземпляров типа объекта являются неизменяемыми, содержащий этапы, на которых:
осуществляют доступ к объявлению того, что тип объекта является неизменяемым; и
в ответ на это объявление, выполняют следующие этапы, на которых:
автоматически формулируют машиноисполняемые команды с тем, чтобы каждый экземпляр этого типа объекта был классифицирован как неизменяемый;
автоматически формулируют машиноисполняемые команды с тем, чтобы все прямо или косвенно доступные элементы этого экземпляра упомянутого типа объекта классифицировались как неизменяемые; и
автоматически формулируют машиноисполняемые команды с тем, чтобы существование любой ссылки, которая позволяет выполнять присвоение полей данного экземпляра упомянутого типа объекта, не допускалось после момента, в который упомянутый экземпляр становится доступным создателю этого экземпляра.