从Java中的另一个类访问变量的实例
是否可以从Java中的另一个类访问一个类中的变量实例?从Java中的另一个类访问变量的实例
比方说,你已经在A级以下:
private BlockingQueue<byte[]> buffer = new LinkedBlockingQueue<byte[]>();
我想在这个类更改队列,然后可以使用从另一个类访问它。
我将如何从另一个类访问缓冲区的实例?它甚至有可能吗?
添加一个getter:
public class Whatever {
private BlockingQueue<byte[]> buffer = new LinkedBlockingQueue<byte[]>();
public BlockingQueue<byte[]> getBuffer() {
return buffer;
}
}
然后,如果你拥有的任何实例:
Whatever w = new Whatever();
BlockingQueue<byte[]> buffer = w.getBuffer();
谢谢,它效果很好。 – gtdevel 2011-12-31 17:47:54
将private
更改为public
。然后,你可以访问变量缓冲区这样的:
A myobj = new A();
BlockingQueue<byte[]> bq = myobj.buffer;
有关详细信息,请参阅本文访问控制:http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
一个这样做是利用干将可以说是更好的办法。也就是说,在类A
中创建一个get()
方法,该方法仅返回buffer
。
public BlockingQueue<byte[]> getBuffer() {
return buffer
}
然后你就可以通过调用getBuffer()
访问:
BlockingQueue<byte[]> bq = myobj.getBuffer();
它通常是最好的o封装集合并且不公开集合本身。相反,您应该公开您想要执行的操作
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(); }
}
感谢彼得,我是这样开始的,但是我遇到了问题,所以我正在使用其他方法进行错误检查。我完全赞成你。 – gtdevel 2011-12-31 19:06:18
您可以对ClassA进行更改吗?如果是这样,请在ClassA中添加getter方法,并通过实例化ClassA从另一个类中调用该方法。 – kosa 2011-12-31 17:40:24