Java 使用非最终变量设置最终变量
Java use of non-final variable to set final variable
这可能是个愚蠢的问题,但我还是会冒险问这个问题。
我经常需要创建一个 final
变量以在其他地方使用,并且需要根据某些条件设置该变量的值。我通常是这样做的:
String notFinalVersion = null;
if (someThing == 1) {
notFinalVersion = "The value was 1.";
} else {
notFinalVersion = "The value is not 1.";
}
final String finalVersion = notFinalVersion;
然后我可以在需要的地方使用变量 finalVersion
。但是,这似乎有点不对劲。有更好的方法吗?
编辑:"better",我的意思是我正在寻找一种方法来定义不需要我创建额外变量的最终变量。我知道创建一个额外的变量效率低下而且不是一个好的做法,而且我确信必须有一种方法可以在没有额外步骤的情况下完成需要完成的工作。
我收到了一个答案,我已将其标记为已接受。正如我在评论中所述,我最初尝试了提供的解决方案,但收到了来自 Eclipse 的错误。我一定是第一次输入错误,或者 Eclipse 有一些 "hiccup".
我承认做某事有很多种方法,一个人认为最好的方法并不是其他人会考虑的方法。但是,此处包含的所有答案都清晰明了,我觉得解决了我的问题。
您可以声明一个 final
变量但不赋值,只要在使用前明确赋值即可。不要一开始就赋值 null
,否则肯定已经赋值了。分配它,就像您已经对 if
/else
块所做的那样,您会没事的。
final String finalVersion;
if (someThing == 1) {
finalVersion = "The value was 1.";
} else {
finalVersion = "The value is not 1.";
}
除了@rgettman 的回答,对于这种情况,您可以只使用 三元运算符:
final String finalVersion = someThing == 1 ? "The value was 1." : "The value is not 1.";
这可能是个愚蠢的问题,但我还是会冒险问这个问题。
我经常需要创建一个 final
变量以在其他地方使用,并且需要根据某些条件设置该变量的值。我通常是这样做的:
String notFinalVersion = null;
if (someThing == 1) {
notFinalVersion = "The value was 1.";
} else {
notFinalVersion = "The value is not 1.";
}
final String finalVersion = notFinalVersion;
然后我可以在需要的地方使用变量 finalVersion
。但是,这似乎有点不对劲。有更好的方法吗?
编辑:"better",我的意思是我正在寻找一种方法来定义不需要我创建额外变量的最终变量。我知道创建一个额外的变量效率低下而且不是一个好的做法,而且我确信必须有一种方法可以在没有额外步骤的情况下完成需要完成的工作。
我收到了一个答案,我已将其标记为已接受。正如我在评论中所述,我最初尝试了提供的解决方案,但收到了来自 Eclipse 的错误。我一定是第一次输入错误,或者 Eclipse 有一些 "hiccup".
我承认做某事有很多种方法,一个人认为最好的方法并不是其他人会考虑的方法。但是,此处包含的所有答案都清晰明了,我觉得解决了我的问题。
您可以声明一个 final
变量但不赋值,只要在使用前明确赋值即可。不要一开始就赋值 null
,否则肯定已经赋值了。分配它,就像您已经对 if
/else
块所做的那样,您会没事的。
final String finalVersion;
if (someThing == 1) {
finalVersion = "The value was 1.";
} else {
finalVersion = "The value is not 1.";
}
除了@rgettman 的回答,对于这种情况,您可以只使用 三元运算符:
final String finalVersion = someThing == 1 ? "The value was 1." : "The value is not 1.";