从Java中的另一个类访问变量的实例

时间:2011-12-31 17:36:53

标签: java class buffer instance

是否可以从Java中的另一个类访问一个类中的变量实例。

假设你在A组中有以下内容:

private BlockingQueue<byte[]> buffer = new LinkedBlockingQueue<byte[]>();

我想对此类中的队列进行更改,然后可以使用它从另一个类访问它。

我如何从另一个类访问缓冲区的实例?它甚至可能吗?

3 个答案:

答案 0 :(得分:3)

添加一个getter:

public class Whatever {

    private BlockingQueue<byte[]> buffer = new LinkedBlockingQueue<byte[]>();

    public BlockingQueue<byte[]> getBuffer() {
        return buffer;
    }
}

然后,如果你有一个Whatever的实例:

Whatever w = new Whatever();
BlockingQueue<byte[]> buffer = w.getBuffer();

答案 1 :(得分:2)

private更改为public。然后你可以像这样访问变量缓冲区:

A myobj = new A();
BlockingQueue<byte[]> bq = myobj.buffer;

有关详细信息,请参阅有关访问控制的文章:http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

更好的方法是使用getter。也就是说,在班级get()中创建A方法,只返回buffer

public BlockingQueue<byte[]> getBuffer() {
    return buffer
}

然后您可以致电getBuffer()

来访问它
BlockingQueue<byte[]> bq = myobj.getBuffer();

答案 2 :(得分:2)

通常最好封装集合,而不是公开集合本身。相反,您应该公开您想要执行的操作

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(); }

}