我的队列在我的多线程服务器中实现为链表。我想从另一个类访问此队列。两个类都在同一个包中。我尝试将此队列作为公共静态并通过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);
答案 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.myList
或Queue.getMyList()
来访问您的列表 - 两者都会做同样的事情。使用getter方法的好处是您可以控制对列表的访问,例如通过创建方法synchronized
,防止对列表的调用失序。