尝试使用资源为什么不能修改资源

时间:2019-10-10 22:02:17

标签: java java-8 try-catch variable-assignment try-with-resources

我发现一个尝试使用资源的示例,当我尝试将参考扫描的值设置为null时,该示例未编译

try(Scanner scan = new Scanner(System.in)) {
    String s = scan.nextLine();
    System.out.println(s);
    scan = null;
}

我问这个编译错误背后的规则是什么,我在网上做了一些搜索,但是没有找到解释它的规则 感谢您的解释:=)

1 个答案:

答案 0 :(得分:8)

这是设计使然。您无法重新分配<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script> <div class="dropdown"> <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Stuff </button> <div class="dropdown-menu" aria-labelledby="dropdownMenuButton"> <a class="dropdown-item" href="#">Stuff 1</a> <a class="dropdown-item" href="#">Stuff 2</a> <a class="dropdown-item" href="#">Stuff 3</a> </div> </div> <div class="dropdown"> <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Actions </button> <div class="dropdown-menu" aria-labelledby="dropdownMenuButton2"> <a class="dropdown-item" href="#">Action1</a> <a class="dropdown-item" href="#">Action 2</a> <a class="dropdown-item" href="#">Action 3</a> </div> </div>变量。

  

14.20.3. try-with-resources

     

如果未明确声明final(第4.12.4节),则在资源规范中声明的变量隐式声明final