【发布时间】:2013-05-11 10:18:27
【问题描述】:
关于我的问题Any risk in a AutoCloseable wrapper for java.util.concurrent.locks.Lock?,我想知道为什么 try-with-resource-statement 需要一个 named 局部变量。
我目前的使用情况如下:
try (AutoCloseableReentrantReadWiteLock.Lock l = _lock.writeLock()) {
// do something
}
变量l 在try 块内未使用,只会污染命名空间。据我所知,类似的 C# using-statement 不需要本地命名变量。
由于在 try 块结束时关闭了匿名局部变量,是否有任何原因无法支持以下内容?
try (_lock.writeLock()) {
// do something
}
【问题讨论】:
-
@McDowell Java 9 正在解决需要定义 new 变量的当前行为,方法是允许使用有效的 existing 最终变量。从您的链接看来,Java 9 将支持没有可见标识符的自动关闭资源。 (Discussed here.)