5

我在多线程服务器中将队列实现为链表。我想从另一个班级访问这个队列。两个类都在同一个包中。我尝试将此队列设为公共静态并通过 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);
4

2 回答 2

26

您可以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),但如果你需要一个,那就是你的做法。

于 2012-04-23T11:24:22.983 回答
2

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

如果这是您的 Queue 课程...

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

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

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

于 2012-04-23T13:40:17.237 回答