2012-02-19 47 views
0

在下面的課程中,Store類正好有1 fruit作爲字段變量。我想Store類做以下兩件事。一種是僅以讀取訪問返回水果的數據,另一種是以寫入訪問返回水果的數據。返回的數據類型爲ByteBuffer如何返回對返回變量的只讀訪問權限或對其進行寫入訪問?

例如,如果有人得到ByteBuffergetRead,我不想讓ByteBuffer完全被修改。但是,如果有人訪問ByteBuffergetWrite,那麼我允許他修改ByteBuffer指向的內存內容。

class Fruit { 
    private ByteBuffer data; 
    public ByteBuffer getData(){ 
     return data; 
    } 
} 
class Store { 
    Fruit p; 
    public ByteBuffer getRead(){ 
     return p.getData(); 
    } 

    public ByteBuffer getWrite(){ 
     return p.getData(); 
    } 
} 

反正是有,我可以當我使用的ByteBuffer控制Java的這種訪問權限?或者,我應該在Fruit類有兩個變量具有相同的價值,但不同的東西嗎?

+1

來自C++背景,任何機會? – 2012-02-19 19:41:08

+0

@Oli_Charlesworth,Hm,no。 – user482594 2012-02-19 21:02:07

回答

6

在這種特殊情況下,它很容易使用asReadOnlyBuffer

public ByteBuffer getRead(){ 
    return p.getData().asReadOnlyBuffer(); 
} 

在一般情況下,必須有某種形式的包裝對象(因爲這裏) - Java沒有讀的概念 - 僅從語言的角度來看「對象」;它必須由防止任何突變的代碼提供。

相關問題