从Java中的另一个类访问变量实例
可以从Java中的另一个类访问一个类中变量的实例吗 假设你在A班有以下几项:从Java中的另一个类访问变量实例,java,class,buffer,instance,Java,Class,Buffer,Instance,可以从Java中的另一个类访问一个类中变量的实例吗 假设你在A班有以下几项: private BlockingQueue<byte[]> buffer = new LinkedBlockingQueue<byte[]>(); private BlockingQueue buffer=new LinkedBlockingQueue(); 我希望在此类中对队列进行更改,然后能够使用从另一个类访问它 如何从另一个类访问缓冲区实例?甚至有可能吗?将私有更改为公共。然后您可以像
private BlockingQueue<byte[]> buffer = new LinkedBlockingQueue<byte[]>();
private BlockingQueue buffer=new LinkedBlockingQueue();
我希望在此类中对队列进行更改,然后能够使用从另一个类访问它
如何从另一个类访问缓冲区实例?甚至有可能吗?将
私有
更改为公共
。然后您可以像这样访问变量缓冲区:
A myobj = new A();
BlockingQueue<byte[]> bq = myobj.buffer;
然后,您可以通过调用getBuffer()
来访问它:
BlockingQueue bq=myobj.getBuffer();
将私有
更改为公共
。然后您可以像这样访问变量缓冲区:
A myobj = new A();
BlockingQueue<byte[]> bq = myobj.buffer;
然后,您可以通过调用getBuffer()
来访问它:
BlockingQueue bq=myobj.getBuffer();
添加一个getter:
public class Whatever {
private BlockingQueue<byte[]> buffer = new LinkedBlockingQueue<byte[]>();
public BlockingQueue<byte[]> getBuffer() {
return buffer;
}
}
公共类{
private BlockingQueue buffer=新建LinkedBlockingQueue();
public BlockingQueue getBuffer(){
返回缓冲区;
}
}
然后,如果您有任何实例:
Whatever w = new Whatever();
BlockingQueue<byte[]> buffer = w.getBuffer();
Whatever w=新的Whatever();
BlockingQueue buffer=w.getBuffer();
添加一个getter:
public class Whatever {
private BlockingQueue<byte[]> buffer = new LinkedBlockingQueue<byte[]>();
public BlockingQueue<byte[]> getBuffer() {
return buffer;
}
}
公共类{
private BlockingQueue buffer=新建LinkedBlockingQueue();
public BlockingQueue getBuffer(){
返回缓冲区;
}
}
然后,如果您有任何实例:
Whatever w = new Whatever();
BlockingQueue<byte[]> buffer = w.getBuffer();
Whatever w=新的Whatever();
BlockingQueue buffer=w.getBuffer();
通常最好封装集合,而不是公开集合本身。相反,您应该公开要执行的操作
public class Whatever {
private final BlockingQueue<byte[]> buffer = new LinkedBlockingQueue<byte[]>();
public void enque(byte[] bytes) { buffer.add(bytes); }
public byte[] takeNext() { return buffer.take(); }
}
公共类{
private final BlockingQueue buffer=新建LinkedBlockingQueue();
public void enque(字节[]字节){buffer.add(字节);}
公共字节[]takeNext(){return buffer.take();}
}
通常最好封装集合,而不是公开集合本身。相反,您应该公开要执行的操作
public class Whatever {
private final BlockingQueue<byte[]> buffer = new LinkedBlockingQueue<byte[]>();
public void enque(byte[] bytes) { buffer.add(bytes); }
public byte[] takeNext() { return buffer.take(); }
}
公共类{
private final BlockingQueue buffer=新建LinkedBlockingQueue();
public void enque(字节[]字节){buffer.add(字节);}
公共字节[]takeNext(){return buffer.take();}
}
您可以更改ClassA吗?如果是这样,在ClassA中添加getter方法,并通过实例化ClassA从另一个类调用该方法。您可以对ClassA进行更改吗?如果是这样,请在ClassA中添加getter方法,并通过实例化ClassA从另一个类调用该方法。谢谢Peter,我一开始就是这么做的,但是我遇到了问题,所以我使用另一个方法进行了一些错误检查。我完全同意你的观点。谢谢Peter,我一开始就是这么做的,但是我遇到了问题,所以我用另一种方法做了一些错误检查。我完全同意你的意见。