try-with-resource
が Java 7 で導入されましたが、 が に改造されていないことに驚きましLock
たAutoCloseable
。かなり単純に思えたので、次のように自分で追加しました。
class Lock implements AutoCloseable {
private final java.util.concurrent.locks.Lock _lock;
Lock(java.util.concurrent.locks.Lock lock) {
_lock = lock;
_lock.lock();
}
@Override
public void close() {
_lock.unlock();
}
}
これはAutoCloseableReentrantReadWiteLock
クラスで機能し、使用方法は次のとおりです。
try (AutoCloseableReentrantReadWiteLock.Lock l = _lock.writeLock()) {
// do something
}
これは自動クローズRAIIの非常に単純で標準的な使用に見えるので、これを行うべきではない正当な理由があるに違いないと考えています。誰か知ってる?