我发现一个尝试使用资源的示例,当我尝试将参考扫描的值设置为null时,该示例未编译
try(Scanner scan = new Scanner(System.in)) {
String s = scan.nextLine();
System.out.println(s);
scan = null;
}
我问这个编译错误背后的规则是什么,我在网上做了一些搜索,但是没有找到解释它的规则 感谢您的解释:=)
答案 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
。