在下面的类中,Storeclass只有1 fruit作为字段变量.
我希望Store上课做以下两件事.一种是仅使用读取访问返回水果的数据,另一种是使用写入访问返回水果的数据.返回的数据有类型ByteBuffer.
例如,如果有人ByteBuffer通过getRead,我根本不想修改ByteBuffer.但是,如果有人获得ByteBuffer通过getWrite,然后我让他修改的内存字节缓冲区所指向的内容.
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();
}
}
Run Code Online (Sandbox Code Playgroud)
无论如何,当我使用ByteBuffer时,我可以在Java中控制这个访问权限吗?或者,我是否应该在Fruit类中具有2个具有相同值但是具有不同内容的变量?
在这种特殊情况下,使用起来非常简单asReadOnlyBuffer:
public ByteBuffer getRead(){
return p.getData().asReadOnlyBuffer();
}
Run Code Online (Sandbox Code Playgroud)
通常,必须有某种包装对象(就像这里一样) - 从语言的角度来看,Java没有对象的只读"视图"的概念; 它必须由防止任何突变的代码提供.
| 归档时间: |
|
| 查看次数: |
205 次 |
| 最近记录: |