Что касается моего вопроса Любой риск в обертке AutoCloseable для java.util.concurrent.locks.Lock?, мне интересно, почему trh try-with-resource требует локальная переменная.
Мое текущее использование выглядит следующим образом:
try (AutoCloseableReentrantReadWiteLock.Lock l = _lock.writeLock()) {
    // do something
}        
Переменная l не используется внутри блока try и только загрязняет пространство имен. Из того, что я помню, аналогичный оператор C# using не требует локальной именованной переменной.
Есть ли какая-то причина, по которой невозможно было поддерживать следующее: с анонимной локальной переменной, которая закрыта в конце блока try?
try (_lock.writeLock()) {
    // do something
}