Вижу смысл в final полях класса, если есть возможность. Как бы автоматически подписываешься под контракт, что поле один раз инициализировалось и больше изменяться не может
я не спорю, что у final есть применение, не только классическое - в литеральных константах. Но вот так чтоб вообще везде. В буквальном смысле везде.
Раз уж пошла такая пьянка. Знает кто-нибудь, эффективный способ сделать так, чтобы чувствительные данные не попали в heap dump. Есть общая рекомендация не хранить пароли в String и использовать массив char например. А есть ещё способы?
Раз уж пошла такая пьянка. Знает кто-нибудь, эффективный способ сделать так, чтобы чувствительные данные не попали в heap dump. Есть общая рекомендация не хранить пароли в String и использовать массив char например. А есть ещё способы?
Шипилёв в докладе про Шенанду вроде утверждал, что если все поля файнал, то "заморозка" в конце конструирования объекта даёт возможность убрать некоторые барьеры памяти и небольшой прирост такие есть
Я конечно не знаток байткодов но отличия есть (хотя и вправду трудно отличить была ли локальная переменная final)
Отличия только если переменная compile time constant. Это уже обсудили в соседнем чате. Если нет, то никак не отличишь. А хранить compile time constant в локале пригождается исключительно редко