методы в неизменяемом классе, которые изменяют инициализированные переменные при инициализации? ДЖАВА - PullRequest
0 голосов
/ 11 марта 2019

Кто-нибудь знает, как добавить методы в неизменяемый класс, который позволяет мне изменять объект, указанный только при инициализации?

Например, у вас есть 2 числа, которые вы хотите умножить на коэффициент.

так что при инициализации вы также хотите иметь возможность умножения, если вы хотите

Class name_of_object = новый класс (int1, int2) .multiply_method (intfactor);

и что бы создать объект, который нельзя изменить?

1 Ответ

0 голосов
/ 11 марта 2019

Проще: вы не можете.

Если вы каким-либо образом модифицируете поля неизменяемого класса, то вы доказали, что он не был неизменным.

Если это ваш собственный класс,тогда, конечно, вы можете учесть изменения после конструирования, написав соответствующие методы, таким образом делая класс изменяемым.

Если вы хотите, чтобы ваш класс оставался неизменным, вы можете заставить модифицирующий метод возвращать свежий экземпляр вашего класса.класс, с измененными значениями поля (например, BigInteger.add()).Исходный экземпляр остается неизменным, и вы получаете новый с нужными значениями.

Если это чей-то неизменный класс, вы не можете его изменить.Вы должны разобраться с его методами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...