• Что дает нам final, кроме константности?

    cheremin
    @cheremin
    Он насчитал вероятность реордеринга — и то в специально приготовленном борще. А я говорю о вероятности того, что этот реордеринг действительно что-то соптимизирует.
  • Что дает нам final, кроме константности?

    cheremin
    @cheremin
    Не «сброс кэшей», а запрет реордеринга. И на интелах этот запрет не стоит ничего (разве что есть очень призрачный шанс на какую-нибудь мегахитрую оптимизацию на уровне компилятора, которая с запретом реордеринга обломится).

    final, кроме memory visibility effects, еще и документирует намерение «эта переменная не изменяемая». Компилятор-то, и правда, без вас разберется, меняется переменная или нет. А вот человеку проще сразу видеть, что автор кода этой переменной меняться позволять не собирается. По моему опыту — это очень сильно упрощает чтение кода. Лично у меня все переменные и поля final, кроме тех, для которых я могу найти вескую причину их таковыми не делать.