Если переменная назначается, когда она объявлена как final, тогда да, static имеет определенный смысл, но есть случаи, когда она не должна быть статической:
public MyClassWithFinal {
private final String finalVar;
public MyClassWithFinal(String name) {
this.finalVar = name;
}
}
Другой случай: еслиэкземпляр var не является строковой или числовой константой, но требует запуска конструктора, так как у конструктора могут быть побочные эффекты каждый раз, когда он вызывается, поэтому запуск его только один раз отличается от запуска его несколько раз.
Тем не менее,GWT будет встроенные / внутренние постоянные строковые значения, поэтому, если у вас есть несколько полей String, все они назначены одному и тому же значению, GWT, вероятно, обнаружит это и переведет их все в статическое состояние.
public final String constant = "Some Constant that really ought to be static";
GWT заметит, что этоникогда не назначается, за исключением случаев, когда он объявлен, и может даже удалить само поле.
Лучшее правило - начинать с лучшего (то есть наиболее читаемого, наиболее удобного в обслуживании, наиболее эффективного) кода Java и разбивать его только наслучаи, когда GWT требует чего-то конкретного.Это не один из таких случаев: компилятор должен выполнять одинаковые базовые оптимизации независимо от того, как вы это пишете.