如果你看看我的if else块,你会看到我试图将一个人对象添加到我的arraylist中。但是,它只会向arraylist添加/保留一个对象。如果我循环遍历数组并打印出所有元素,那么只有一个人对象,并且它始终是实例化的最后一个人。有谁知道为什么会这样?我已经在Stack Overflow上查看了类似帖子,并且找不到任何帮助。
public class ClientThread extends Thread {
static ArrayList<Person> array = new ArrayList<Person>();
Socket socket;
public ClientThread(Socket socket) {
this.socket = socket;
}
public void run() {
try {
handleConnection(socket);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void handleConnection(Socket server) throws IOException {
String x = "";
//to get input from the client
BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));
//Out to the client -- Enable auto-flush
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(server.getOutputStream())), true);
//prints "got a connection from X" on server terminal
System.out.println("got connection from " + server.getInetAddress().getHostName() + "\n");
while (true) {
// get input from the client
if((x = in.readLine()).length() != 0) {
if (x.equals("END")) {
System.out.println("This thread is shutting down. BYE!");
break;
} else if (x.equals("STORE") || x.equals("store")) {
String storeName;
System.out.println("Client wants to store someone's number.");
out.println( "SERVER > Enter a name and number: ");
storeName = in.readLine();
array.add(new Person(storeName));
} else {
System.out.println("Echoing: " + x);
out.println( "SERVER > ");
}
}
}
}
}
这是我的类Person
的代码class Person {
protected String name;
public Person(String name) {
this.name = name;
}
//overide toString
public String toString() {
return name;
}
}