从java中的另一个类访问静态变量

时间:2012-04-23 11:21:14

标签: java class static public

我的队列在我的多线程服务器中实现为链表。我想从另一个类访问此队列。两个类都在同一个包中。我尝试将此队列作为公共静态并通过getter访问它,但没有成功可以有人告诉我究竟是什么问题。

这是我的代码: 队列声明:

public static Queue<Request> q=new ConcurrentLinkedQueue<Request>();

public static void setQ(Queue<Request> q) {
        Connection.q = q;
    }

    public static Queue<Request> getQ() {
        return q;
    }

访问队列:

Queue<Request> queue=new ConcurrentLinkedQueue<Request>(); 
queue=Connection.getQ();

在连接线程中向队列添加值

q.add(r);

2 个答案:

答案 0 :(得分:13)

您可以使用符号public static直接访问其他班级的ClassName.memberName成员:

public class Foo {
    public static String bar = "hi there";
}

public class Thing {
    public static void main(String[] args) {
        System.out.println(Foo.bar); // "hi there"
   }
}

public static数据成员通常不是一个好主意(除非他们final),但如果你需要,那就是你这样做的。

答案 1 :(得分:0)

您应该能够直接访问,或使用静态getter方法...

如果这是你的队列类......

public class Queue {
    public static LinkedList myList = new LinkedList();

    public static ListedList getMyList(){
        return myList;
    }
}

然后,您可以通过拨打Queue.myListQueue.getMyList()来访问您的列表 - 两者都会做同样的事情。使用getter方法的好处是您可以控制对列表的访问,例如通过创建方法synchronized,防止对列表的调用失序。