Как я могу создать оболочку над ReentrantReadWriteLock ReadLock и WriteLock
У меня есть ReentrantReadWriteLock
, ReentrantReadWriteLock
содержит ReadLock и WriteLock в качестве подклассов.
I want to extend this ReadLock and WriteLock by my custom classes as
DummyReadLock and DummyWriteLock.
Тогда я должен быть в состоянии сделать что-то вроде ниже
final Lock lock = new DummyReadLock.readLock();
или же
final Lock lock = new DummyWriteLock.writeLock();
Можно ли этого добиться?
2 ответа
Решение
Вы можете:
class DummyReadLock extends ReentrantReadWriteLock.ReadLock {
private ReentrantReadWriteLock.ReadLock readLock;
// inherited constructor
protected DummyRLock(ReentrantReadWriteLock rwlock) {
super(rwlock);
this.readLock = rwlock.readLock();
}
public ReentrantReadWriteLock.ReadLock readLock() {
return readLock;
}
}
Да, это должно быть возможно. Я не уверен точно, почему вы хотели бы сделать это, но приведенный ниже код расширил бы, например, ReadLock.
public class DummyReadLock extends ReentrantReadWriteLock.ReadLock
{
public DummyReadLock(ReentrantReadWriteLock arg0)
{
super(arg0);
}
}
Обратите внимание, что конструктор для ReadLock требует ReentrantReadWriteLock в качестве параметра, поэтому вы не можете вызвать его точно так, как вы показали в своем примере.