Еще один момент в дополнение к объяснению Алекса состоит в том, что мы пытаемся дать предупреждения для кода, который делает то, что вы, вероятно, не собирались, , чтобы вы могли случайно отправить с ошибкой .
В этом конкретном случае, сколько времени на самом деле спасет вас предупреждение? Один тестовый прогон. Вы найдете эту ошибку, как только протестируете код, потому что он всегда сразу падает и ужасно умирает. Предупреждение на самом деле не принесет вам большую пользу здесь. Вероятность того, что в рекурсивной оценке свойства есть некоторая незначительная ошибка, низкая.
Напротив, мы делаем предупреждаем, если вы делаете что-то вроде этого:
int customerId;
...
this.customerId= this.customerId;
Там нет ужасных сбоев, и код является действительным кодом; он присваивает значение полю. Но так как это бессмысленный код, вы, вероятно, не хотели этого делать. Так как он не погибнет ужасно, мы предупреждаем, что здесь есть что-то, чего вы, вероятно, не собирались и иначе не могли бы обнаружить через аварию.