关于我的问题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 commentthe Java Technology Specification中给出的正确答案,后者介绍了try-with-resources语句:

09-10 14:03
查看更多