5

マルチスレッド サーバーにリンク リストとして実装されたキューがありました。別のクラスからこのキューにアクセスしたい。両方のクラスが同じパッケージに含まれています。このキューを public static にしてゲッター経由でアクセスしようとしましたが、成功しませんでした。正確な問題を教えてください。

これは私のコードです: キュー宣言:

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

直接、または静的ゲッターメソッドを使用してアクセスできるはずです...

これが 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 に答える