繁体   English   中英

局部变量不能赋值为final

[英]local variable cannot be assigned as final

我有一个变量要求我将其设为最终变量,但在将其设为最终变量时,我收到一条错误消息,内容如下:“无法分配最终局部变量“enter”,因为它是在结束类型中定义的”

你怎么能声明这样一个变量?

void yyyyyy(ActionEvent event){

final Scanner enter = null;

try{
.
.
.
enter = new Scaner(xxxxx);

}catch(){
....
}finally{
  if(enter != null){
}
}

现在你声明变量并同时初始化它。 由于它是最终的,因此您不能多次为其分配值。

如果你从初始化中删除赋值,你仍然不能使这个变量最终,因为你在 finally 块中检查它的 null。 为了使该逻辑起作用,应在某处明确分配变量 null 。 这是不可能的,因为 try 块可能会在第一行抛出异常。

无论要求您将变量设为最终变量 - 忽略它。

你可以让它像这样工作。 正如其他一些答案所解释的那样,您不能为最终变量赋值两次。

你可以让它像这样工作

void yyyyyy(final ActionEvent event) {
    Scanner enter = null;
    try {
        enter = new Scanner("/");
    } catch (final Exception exception) {

    } finally {
        enter.close();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM