在做一个JavaC/S模式的项目时,需要实现一个传递List<Object>的功能,花费了一些时间,终于实现了。
首先我是有一个User类,也就是List<Object>中的Object,然后有一个SendMessage类,主要是通过其对象的序列化实现。其中要注意的是,这2个类在客户端和服务器端的路径要相同,代码如下:
User类:
public class User implements Serializable{
private String name;
private String nicheng;
private String password;
private String age;
private String like;
private String sex;
private int flag;
private String qq;
private static final long serialVersionUID = -5240152692961888097L;
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
public int getFlag() {
return flag;
}
public void setFlag(int flag) {
this.flag = flag;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNicheng() {
return nicheng;
}
public void setNicheng(String nicheng) {
this.nicheng = nicheng;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getLike() {
return like;
}
public void setLike(String like) {
this.like = like;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
SendMessage类:
public class SendMessage implements Serializable {
List<User> ss = null;
private static final long serialVersionUID = -5240152692961888097L;
public List<User> getSs() {
return ss;
}
public void setSs(List<User> ss) {
this.ss = ss;
}
}
服务器端核心代码:
List<User> result = new ArrayList();
while(rs1.next()) //这是从数据库提取数据,前面操作就省略了
User us = new User();
us.setName(rs1.getString("user_name"));
us.setQq(rs1.getString("user_qq"));
us.setFlag(1);
result.add(us);
}
SendMessage sendmessage = new SendMessage();
sendmessage.setSs(result);
out.writeObject(sendmessage);
客户端核心代码:
List<User> result = new ArrayList();
SendMessage aa = new SendMessage();
aa = (SendMessage)in.readObject();
result = aa.getSs();