关于我的问题Any risk in a AutoCloseable wrapper for java.util.concurrent.locks.Lock?,我想知道为什么try-with-resource-statement根本需要一个命名局部变量。
我当前的用法如下:
try (AutoCloseableReentrantReadWiteLock.Lock l = _lock.writeLock()) {
// do something
}
变量l
在try块内未使用,仅污染 namespace 。据我所知,类似的C#using
-statement不需要本地命名变量。是否有任何原因不支持以下情况,并且在try块末尾关闭了一个匿名局部变量?
try (_lock.writeLock()) {
// do something
}
最佳答案
@McDowell发表的评论中的链接揭示了由Joe Darcy领导的a blog post comment在the Java Technology Specification中给出的正确答案,后者介绍了try-with-resources语句: