首页 > 解决方案 > 尝试使用资源为什么不能修改资源

问题描述

当我尝试将引用扫描的值设置为 null 时,我发现了一个无法编译的资源示例

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

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

标签: javajava-8try-catchvariable-assignmenttry-with-resources

解决方案


这是设计使然。您不能重新分配final变量。

14.20.3。尝试资源

如果在资源规范中声明的变量没有显式声明(第 4.12.4 节),则它是隐式声明的。finalfinal


推荐阅读