Java 使用非最终变量来设置最终变量

2022-09-03 09:15:52

这可能是一个愚蠢的问题,但我无论如何都会冒险问它。

通常,我需要创建一个变量以在其他地方使用,并且该变量的值需要根据某些条件进行设置。这是我通常的做法: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

您可以声明一个变量,但尚未分配它,只要在使用它之前明确分配了它。不要首先分配它,否则它肯定会被分配。像你已经在用你的/块一样分配它,你会没事的。finalnullifelse

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.";