apt-get для Cygwin?

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

(Конечно, предполагается, что вы используете HotSpot, но это, безусловно, наиболее распространенный JVM, поэтому ...)

На мой взгляд, вы должны использовать final на основе четкого дизайна и удобочитаемости, а не по соображениям производительности. Если вы хотите изменить что-либо по соображениям производительности, вы должны выполнить соответствующие измерения, прежде чем изгибать самый чистый код вне формы - таким образом вы сможете решить, стоит ли достижение какой-либо дополнительной производительности более плохой читаемости / дизайна. (По моему опыту, это почти никогда не стоит, YMMV.)

EDIT: Как уже упоминалось в последних полях, стоит обратить внимание на то, что они часто являются хорошей идеей в любом случае с точки зрения четкого дизайна. Они также изменяют гарантированное поведение с точки зрения видимости поперечного потока: после завершения конструктора любые конечные поля гарантированно будут видны в других потоках немедленно. Это, вероятно, наиболее распространенное использование final в моем опыте, хотя, как сторонник эмпирического эмпирического правила «дизайн для наследования или запрещения» Джоша Блоха, я должен чаще использовать final для классов ...

122
задан alex 12 August 2017 в 16:23
поделиться