Мой аргумент всегда был: «Если IDE может сделать это алгоритмический, так может JVM»
ли это удержание воды аргумента?
Nope. Потому что, когда IDE делает это (и я не видел, чтобы он делал это по умолчанию без запроса, даже если вы можете явно настроить его таким образом), разработчик может проверить, что это действительно решение, которое они хотели. Этот предохраняет другой код от действий, связанных с пожеланиями разработчика.
Если было только сделано во время выполнения, что победит всю цель. Если я создаю поле final
, чтобы предотвратить изменение его другим кодом, мне нужна ошибка времени компиляции, если другой код пытается ее изменить. Если он просто оставлен до JVM, я не могу полагаться на код , а не, изменяя его.
Когда разработчики Java должны использовать ключевое слово «final»?
Для полей, когда поле предназначено для инициализации в конструкторе и не изменяется после этого.
Для классов, если вы не создали для своего класса подклассы (ИМО).
Для методов, когда вы не разработали свой код для подклассов, чтобы переопределить метод.
Для локальных переменных, где вы хотите получить доступ к переменной в анонимном внутреннем классе. (Вы также можете использовать их для других локальных переменных, конечно, я не склонен к этому, но я знаю некоторых людей, которые это делают. Это отличие не видно на коде вне метода, конечно.)
переменной должно быть окончательным, если вы хотите сказать другим разработчикам: «Эй, вы не должны» измените это! " –
Я настоятельно рекомендую вам [это] (http://renaud.waldura.com/doc/java/final-keyword.shtml) статью. В некоторых случаях «final» может улучшить производительность вашей программы. – Eich