Похоже, что существует консенсус в том, что пометка переменных-членов как конечных дает преимущество в производительности, поскольку их никогда не нужно перезагружать из основной памяти. Мой вопрос: делают ли javac или Hotspot это автоматически, когда очевидно, что переменная не может измениться. например, будет ли javac сделать окончательным 'x' в этом классе ниже ...
public class MyClass {
private String x;
MyClass(String x) {
this.x = x;
}
public String getX() {
return x;
}
}
Во второстепенном вопросе, Кто-нибудь представил эмпирические доказательства того, что маркировка членов как final ускоряет выполнение кода? Безусловно, какое-либо преимущество незначительно в любом приложении, выполняющем удаленные вызовы или поиск в базе данных?