Вот небольшой пример кода, сильно упрощённый:
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* Part of project: SerializationTest.
* Created by Maksim on 19.03.2017.
*/
public class Main {
public static void main(String[] args) {
if(args.length == 1) {
try(Socket socket = new Socket("127.0.0.1", 9876);
ObjectInputStream objectInputStream = new ObjectInputStream(socket.getInputStream())) {
Test test = (Test) objectInputStream.readObject();
System.out.println(test.getA());
test = (Test) objectInputStream.readObject();
System.out.println(test.getA());
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
} else {
try (ServerSocket serverSocket = new ServerSocket(9876);
Socket socket = serverSocket.accept();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(socket.getOutputStream())) {
Test test = new Test(10);
objectOutputStream.writeObject(test);
objectOutputStream.flush();
test.setA(110);
objectOutputStream.writeObject(test);
objectOutputStream.flush();
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
}
}
Это клиент-сервер. Вот сам класс Test:
import java.io.Serializable;
/**
* Part of project: SerializationTest.
* Created by Maksim on 19.03.2017.
*/
public class Test implements Serializable{
private int a;
public Test() {
}
public Test(int a) {
this.a = a;
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
}
Вывод на консоль:
10
10
Как сделать так, чтобы выводилось:
10
110
Мне надо это для экономии памяти, чтобы использовать один класс обёртку для передачи данных. Возможно ли это?
Для этого можно воспользоваться методом reset класса ObjectOutputStream
:
test.setA(110);
objectOutputStream.reset();
objectOutputStream.writeObject(test);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
ПриветУ меня есть класс, наследованный от EditText c обработчиком выделения текста
Подскажите, пожалуйста, создаю PreparedStatement c запросом на вставку в PostgreSQLВ таблице есть поле created (с типом TimestampTZ)
Добрый день всем! На сегодняшний день интересует вопрос: какая сеть приносит больше дохода и какая сеть более стабильная? То, что appodeal выводит...
Если присмотреться, то 2 объекта класса EditText почти одинаковыеМожно ли как-то создать копию 2 из 1, а после уже исправить значения