2011-12-05 42 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作爲參數,所以你在你的例子顯示,你不能準確調用它。

相關問題