Строка и финал

Я думаю, что вы пытаетесь использовать 'msg' в качестве ключа для 'Post слишком большой', и если это так, то это должен быть ассоциативный массив.

->withErrors(['msg' => 'Post is too large'])

Но даже с вашим кодом должно отображаться сообщение об ошибке «msg» и «Post is too large» в вашем элементе ul. Таким образом, у вас будет 2 элемента списка в этом контейнере. Не видеть ничего технически неправильного в том, чем вы поделились, где вы не увидите ошибок при перенаправлении.

28
задан Mehrdad Afshari 17 May 2009 в 16:56
поделиться

5 ответов

final в этом контексте означает, что переменная name может быть назначена только один раз. Присвоение ему другого объекта String снова приводит к ошибке компиляции.

Я думаю, что причиной путаницы здесь является то, что ключевое слово final может использоваться в нескольких различных контекстах:

  • final class: класс не может быть разделен на подклассы.
  • final method: метод не может быть переопределен.
  • конечная переменная: переменная может быть назначена только один раз.

См. Статью в Википедии о final в Java для примеров для каждого случая.

53
ответ дан 28 November 2019 в 02:55
поделиться

Прежде чем вы начнете рассматривать проблему с технической точки зрения, вы должны оценить, насколько критично приложение для вашего бизнеса. Похоже, у вас есть работающее приложение. Если он обеспечивает согласованное поведение и вам не нужны обновления / новые разработки, вы можете оставить его в покое. Мы, разработчики программного обеспечения, любим жаловаться на чужой код, переписывать чужие работы «элегантными» решениями. Это деньги.

Однако у вас есть вложения, которые могут нуждаться в обслуживании, и когда у вас есть базовый код и база данных в dis-array, вы понесете дополнительные расходы, потому что приложение не поддается модификации. Вы захотите почувствовать, сколько изменений вам нужно поддержать. Учитывая, что он находится в производстве 15 лет, у вас был хороший пробег, так что у вас нет особого риска.

Переписывание будет стоить вам, потому что вам нужно воссоздать то, что делает приложение, и поскольку вспомогательная база данных и программа кажутся "ненормализованными" и неструктурированными , это потребует больших усилий. Наличие чистой модели базы данных дает преимущества, так как будет проще составлять отчеты, экспортировать в Excel и т. Д. И если вы захотите изменить ее, разработчикам будет легче понять, что им делать.

Чтобы тратить деньги Чтобы получить то, что у вас уже есть, необходимо попросить фирму подробно описать, какие дополнительные преимущества вы получите. Являются ли эти преимущества сверх того, что вы получаете сегодня, и выполнит ли эта фирма свои обещания? Будет ли ваша компания лучше, если база данных будет "нормализованной" но вы не получаете никакой другой выгоды, кроме того, что дает вам текущее приложение? Помните об этом, прежде чем переходить на новую платформу.

потому что вы можете прочитать его в два раза и получить разные значения.

Как это часто бывает, строковые объекты Java также неизменяемы. Это означает, что вы не можете изменять значение, которое представляет конкретный объект String. Сравните это с массивом - вы можете заменить первый элемент объекта массива другим объектом, но вы не можете заменить первый символ объекта String другим символом. Вот почему String.replace () возвращает новую строку - она ​​не может изменить старую.

Одной из причин, по которой String является final, является предотвращение передачи экземпляра подкласса String, который реализует изменяемое поведение, в место строки.

Но можете ли вы изменить конкретный объект и можете ли вы назначить другой объект переменной - это совершенно разные понятия. Один - свойство объектов String,

4
ответ дан 28 November 2019 в 02:55
поделиться

Вы путаете неизменяемый с final.

String, как Integer и Long, является неизменяемым классом в том смысле, что внутренние данные защищены от модификации посредством инкапсуляции.

Однако, как сказал Айман, final относится к указателю на строку.

1
ответ дан 28 November 2019 в 02:55
поделиться

Помните, что ключевое слово Java final в этом случае служит двум целям:

  • означает, что ссылка не может быть установлена ​​на другую строку - т.е. вы не можете впоследствии сделать "имя = ... ";
  • но, что очень важно, это означает, что ссылка правильно опубликована в других потоках (см. Дополнительную информацию в связанной статье или в таких работах, как Goetz et al,« Java Concurrency in Practice ".
2
ответ дан 28 November 2019 в 02:55
поделиться

Взгляните на Последнее слово по последнему ключевому слову .

String name = "scott";
name = "tiger"; // OK

final String gender = "male";
gender = "female"; // won't compile you cannot reassign gender cause it's final
2
ответ дан 28 November 2019 в 02:55
поделиться
Другие вопросы по тегам:

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