我正在开发一个客户端 - 服务器应用程序,我有以下问题。
在一个类(服务器)中,我有一个对称为客户端的 ArrayList 的静态引用和一个静态 getter getClientsArray()。在另一个类(ServerThread)中,我使用相同的 ArrayList 并成功修改它(添加/删除客户端)。
对于每个客户端,我调用方法 getClientsArray() 并获取该 ArrayList。问题是 ArrayList 在这里是空的,在 Client 类中。每次在 ServerThread 中更新它时(客户端连接后)我都会检查它,它应该有一些东西。
public class Server {
private static ArrayList<User> clients = new ArrayList<User>();
public static ArrayList<User> getClientsArray() {
return clients;
}
and somewhere I call: new ServerThread(sock, users).start();
}
public class ServerThread extends Thread {
private ArrayList<User> users;
public ServerThread(Socket client, ArrayList<User> users) {
this.client = client;
this.users = users;
}
if I modify users in this class, the changes will occur
}
public class Client extends JFrame {
private ArrayList<User> users;
public Client() {
initGraphics();
users = Server.getClientsArray();
System.out.println(users.size()); <- This line always writes 0!!
}
}