这可能是个愚蠢的问题,但我还是会冒险问这个问题。
我经常需要创建一个 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 出现了一些“问题”。
我承认做某事有很多种方法,一个人会接受的最佳方法并不是其他人会考虑的方法。但是,此处包含的所有答案都清晰明了,我觉得解决了我的问题。
最佳答案
您可以声明一个 final
变量但不赋值,只要在使用前明确赋值即可。不要一开始就给它分配 null
,否则它肯定已经被分配了。分配它,就像您已经对 if
/else
block 所做的那样,您会没事的。
final String finalVersion;
if (someThing == 1) {
finalVersion = "The value was 1.";
} else {
finalVersion = "The value is not 1.";
}
关于Java使用非final变量设置final变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30268141/