这个是在客户端与服务器端通信看到的,索性就查了一下serializable!
对象序列化的最主要的用处就是在传递和保存对象(object)的时候,保证对象的完整性和可传递性,比如通过网络传输,或者把一个对象保存成一个文件的时候,要实现序列化接口。
在序列化时,有几点要注意的:
1:当一个对象被序列化时,只保存对象的非静态成员变量,不能保存任何的成员方法和静态的成员变量。
2:如果一个对象的成员变量是一个对象,那么这个对象的数据成员也会被保存。
3:如果一个可序列化的对象包含对某个不可序列化的对象的引用,那么整个序列化操作将会失败,并且会抛出一个NotSerializableException。我们可以将这个 引用标记为transient,那么对象仍然可以序列化
public class StudentAddress implements java.io.Serializable{ private String name; private String street; private String city; } ... //client Socket socket = new Socket(host, 8000); ObjectOutputStream toServer = new ObjectOutputStream(socket.getOutputStream()); String name = "like"; String street = "road123"; String city = "BOS"; StudentAddress s = new StudentAddress(name, street, city); toServer.writeObject(s) //server ServerSocket serverSocket = new ServerSocket(8000); ObjectOutputSteam outputToFile = new ObjectOutpuStream(new FileOutputStream("student.txt", true)); ... Socket socket = serverSocket.accept(); ObjectInputStream inputFromClient = new ObjectInputStream(socket.getInputStream()); Object object = inputFromClient.readObject(); outputToFile.wrieteObject(object);