Что именно делает & ldquo; + = & rdquo; оператор делает? [закрыто]

@RequestBody MultipartFile[] submissions

должно быть

@RequestParam("file") MultipartFile[] submissions

Файлы не являются телом запроса, они являются его частью и нет встроенного HttpMessageConverter, который может преобразовать запрос в массив MultiPartFile.

Вы также можете заменить HttpServletRequest на MultipartHttpServletRequest, что дает вам доступ к заголовкам отдельных частей.

-12
задан Bob Michaelsen 16 January 2019 в 15:03
поделиться

2 ответа

Символ = выделяет значение арифметического выражения справа от переменной слева

Он присваивает результат. Распределение - это нечто иное, и важно помнить разницу позже (в частности, динамическое распределение будет очень запутанным, если вы сопоставите его с назначением).

Но если у меня есть такое выражение, как x += y % 3, значит ли это x = (x + y) % 3 или x = x + (y % 3)?

Отчасти из-за наличия соединения +=, -= и т. Д. Операторы в том, что вы не не расширяете выражение, как это, избегая неоднозначности, создаваемой вашей перезаписью.

x += y % 3

можно читать как

tmp = y % 3; // evaluate right hand side
x += tmp;    // assign to left hand side

(вы можете расширить x += tmp до x = x + tmp, если действительно хотите, после tmp было оценено) . [+1122]

Все правила описаны здесь здесь в любом случае, и в любом случае вы можете просто протестировать некоторый код для проверки: https://ideone.com/81tvjH [ 1112] [+1123]

0
ответ дан Useless 16 January 2019 в 15:03
поделиться

Здесь есть путаница, потому что вы думаете, что x += 1; всегда x = x + 1. Это верно для целых чисел, двойных чисел ... но, как правило, НЕ относится к другим объектам. Многие реализации не создают временный объект. Или мог сделать что-то очень злое.

Итак, это вызов operator+=, который принимает в качестве аргумента результат правой части присваивания.

Так что для целых чисел, это x = x + (y % 3).

0
ответ дан Matthieu Brucher 16 January 2019 в 15:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: