Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
public void printlnfo() {
System.out.println("Line:" + index);
System.out.printlnf Object reference: " + super.toString()); System.out.printlnf' from point "+point1);
System.out.printlnf' to point "+point2);
}
}
public class Main {
public static void main(java.lang.String[] args) { Point p1 = new Point(1.0,1.0); Point p2 = new Point(2.0,2.0); Point p3 = new Point(3.0,3.0); Line linei = new Line(p1 ,p2,1 ); Line Iine2 = new Line(p2,p3,2); System, out. printlnf'line 1 = " + linei); System.out.printlnf'line 2 = " + Iine2); String fileName = "d:\\file"; try{
// записываем объекты в файл
FileOutputStream os = new FileOutputStream(fileName);
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(linel);
oos.writeObject(line2);
// меняем состояние linei и записываем его еще раз
Iine1.setlndex(3);
//oos.reset();
oos.writeObject(line1 );
// закрываем потоки
// достаточно закрыть только поток-надстройку
oos.closeO;
// считываем объекты
System.out.printlп("Read оbjects:");
FilelnputStream is = new FilelnputStream(fileName);
ObjectlnputStream ois = new ObjectlnputStream(is);
for (int i=0; КЗ; i++) {// Считываем 3 объекта
Line line = (Line)ois.readObject();
line.printlnfoQ; } ois.close(); } catch(ClassNotFoundException e) {
e.printStackTrace(); } catch(IOException e) { e.printStackTrace();
}
}
}
В этой программе работа идет с классом Line (линия), который имеет 2 поля типа Point (линия описывается двумя точками). Запускаемый класс Main создает два объекта класса Line, причем, одна из точек у них общая. Кроме этого, линия имеет номер (поле index). Созданные линии (номера 1 и 2) записываются в поток, после чего одна из них получает новый номер (3) и вновь сериализуется.
Выполнение этой программы приведет к выводу на экран примерно следующего:
Constructing line: 1 Constructing line: 2 line 1 = Line@7d39 line 2 = Line@4ec Read objects: Line: 1
Object reference: Line@331e from point (1.0,1.0) reference=Point@36bb to point (2.0,2.0) reference=Point@386e Line: 2
Object reference: Line@6706 from point (2.0,2.0) reference=Point@386e to point (3.0,3.0) reference=Point@68ae Line: 1
Object reference: Line@331e
from point (1.0,1.0) reference=Point@36bb
to point (2.0,2.0) reference=Point@386e
Из примера видно, что после восстановления у линий сохраняется общая точка, описываемая одним и тем же объектом (хеш-код 386е).