2011-12-05 41 views
0

我有一个ReentrantReadWriteLockReentrantReadWriteLock包含ReadLock和WriteLock作为子类。我如何通过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

你的问题对我来说不太合理。如果'DummyReadLock'扩展了'ReentrantReadWriteLock.ReadLock',那么为什么它需要一个'readLock()'方法?我想你想要做的是创建一个扩展'ReentrantReadWriteLock'的* DummyReadWriteLock类,以及一个扩展'ReentrantReadWriteLock.ReadLock'的DummyReadWriteLock.ReadLock'(以及类似的写锁)。此外,还有一个术语:它们是“嵌套类”,而不是“子类”。 “子类”是指使用继承扩展其他类的类。 – ruakh

+0

我如何创建这些? –

回答

0

您可以:

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; 
    }  
} 
+0

如何扩展DummyReerantrantReadWriteLock ..? –

+0

我不明白。你说过你想在ReentrantReadWriteLock中扩展ReadLock。 – Tudor

0

是的,这应该排序是可能的。我不确定你为什么想要这样做,但下面的代码会扩展ReadLock,例如。

public class DummyReadLock extends ReentrantReadWriteLock.ReadLock 
{ 
    public DummyReadLock(ReentrantReadWriteLock arg0) 
    { 
    super(arg0); 
    } 
} 

注意,对于ReadLock的构造需要的ReentrantReadWriteLock作为参数,所以你在你的例子显示,你不能准确调用它。

相关问题