Использование переменной non-final Java для установки конечной переменной

Это, наверное, немой вопрос, но я все равно рискну спросить.

Часто мне нужно создать переменную final для использования где-то в другом месте, и значение этой переменной нужно будет установить на основе некоторого условия. Вот как я обычно это делаю:

String notFinalVersion = null;
if (someThing == 1) {
    notFinalVersion = "The value was 1.";
} else {
    notFinalVersion = "The value is not 1.";
}
final String finalVersion = notFinalVersion;

Затем я могу использовать переменную finalVersion, где мне нужно. Но это просто кажется неправильным. Есть ли лучший способ сделать это?

Изменить: "Лучше", я имел в виду, что я искал метод для определения конечной переменной, которая не требовала создания дополнительной переменной. Я знал, что создание дополнительной переменной было неэффективным, а не хорошей практикой, и я был уверен, что должен быть способ сделать то, что нужно сделать без дополнительных шагов.

Я получил ответ, который я обозначил как принятый. Как я сказал в своем комментарии, я изначально попробовал предоставленное решение, но получил ошибку от Eclipse. Я должен был либо напечатать его неправильно в первый раз, либо Eclipse имеет что-то вроде "икоты".

Я согласен с тем, что есть много способов сделать что-то и что то, что один человек примет как лучший способ, не то, что кто-то еще рассмотрит. Тем не менее, все ответы, включенные здесь, были ясными и точными и, я считаю, решили мою проблему.

Ответ 1

Вы можете объявить переменную final и не назначать ее до тех пор, пока она определенно назначена перед ее использованием. Не назначайте его null для начала, иначе он будет определенно назначен уже. Назначьте его, как вы уже делаете, с блоками if/else, и все будет в порядке.

final String finalVersion;
if (someThing == 1) {
    finalVersion = "The value was 1.";
} else {
    finalVersion = "The value is not 1.";
}

Ответ 2

В дополнение к ответу @rgettman, для этого случая вы можете просто использовать тернарный оператор:

final String finalVersion = someThing == 1 ? "The value was 1." : "The value is not 1.";