рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреНрд░рдорд╛рдВрдХрдиред рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ



рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдПрдХ рдРрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рддрдм рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд╣рд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди, рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХрд╛ рдЕрдзрд┐рдХрддрдо рдЬреАрд╡рдирдХрд╛рд▓ рдЬреНрдЮрд╛рдд рд╣реИ - рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓реЙрдиреНрдЪ рд╕реЗ рд▓реЗрдХрд░ рдЙрд╕рдХреЗ рдЕрдВрдд рддрдХред рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЖрдкрдХреЛ рдЗрд╕ рд░реВрдкрд░реЗрдЦрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЙрдиреНрдЪ рдХреЗ рдмреАрдЪ рдЙрд╕реА рддрд░рд╣ рд╕реЗ "рдЬреАрд╡рди рджреЗрдиреЗ" рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдмреЛрдирд╕ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХрд╛ рд╕рдВрд░рдХреНрд╖рдг рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рднреА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдирд╣реАрдВ рд╣реИ, рдХреНрд░рдорд╛рдВрдХрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рдзрд╛рд░рд╛ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рднреА рдУрдПрд╕ рдкрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╣ рдкреНрд░рд╛рдкреНрдд рд╡рд╕реНрддреБ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЖрдкрдХреЛ рджреВрд░рд╕реНрде рдХреЙрд▓ рд╡рд┐рдзрд┐рдпреЛрдВ (рдЬрд╛рд╡рд╛ рдЖрд░рдПрдордЖрдИ) рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕рдВрднрд╡рддрдГ, рд╡рд┐рднрд┐рдиреНрди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдореЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рдорд╢реАрдиреЛрдВ рдкрд░ рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рдХреЙрд▓рд┐рдВрдЧ рдЬрд╛рд╡рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдорд╢реАрди рдкрд░ рдереЗред

рдПрдХ рдХреНрд░рдорд╛рдВрдХрди рддрдВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдХреЛ Serializable рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдХреЛрдИ рд╡рд┐рдзрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ jvm рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдХреНрд░рдорд╛рдВрдХрди рддрдВрддреНрд░ рдореВрд▓ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрд╛рдЗрдЯ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреНрд░рд┐рдПрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЖрдЙрдЯрдкреБрдЯрд╕реНрдЯреНрд░реАрдо , рдЗрд╕реЗ ObjectOutputStream рдореЗрдВ рдкреИрдХреЗрдЬ рдХрд░реЗрдВ рдФрд░ рд░рд╛рдЗрдЯрдСрдмрдЬреЗрдХреНрдЯ () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ ред рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЗрдирдкреБрдЯрд╕реНрдЯреНрд░реАрдо рдХреЛ рдПрдХ ObjectInputStream рдореЗрдВ рдкреИрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд░реАрдбрдСрдмреНрдЬреЗрдХреНрдЯ () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдХреНрд░рдорд╛рдВрдХрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди, рдХреНрд░рдорд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде, рдЗрд╕рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреНрд░рд╛рдлрд╝ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╛рдиреА рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рд╡рд╕реНрддреБрдУрдВ, рдЕрдиреНрдп рд╡рд░реНрдЧреЛрдВ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рднреА рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╡рд░реНрдЧ рд╡реНрдпрдХреНрддрд┐ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

import java.io.*; class Home implements Serializable { private String home; public Home(String home) { this.home = home; } public String getHome() { return home; } } public class Person implements Serializable { private String name; private int countOfNiva; private String fatherName; private Home home; public Person(String name, int countOfNiva, String fatherName, Home home) { this.name = name; this.countOfNiva = countOfNiva; this.fatherName = fatherName; this.home = home; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", countOfNiva=" + countOfNiva + ", fatherName='" + fatherName + '\'' + ", home=" + home + '}'; } public static void main(String[] args) throws IOException, ClassNotFoundException { Home home = new Home("Vishnevaia 1"); Person igor = new Person("Igor", 2, "Raphael", home); Person renat = new Person("Renat", 2, "Raphael", home); //      ObjectOutputStream ObjectOutputStream objectOutputStream = new ObjectOutputStream( new FileOutputStream("person.out")); objectOutputStream.writeObject(igor); objectOutputStream.writeObject(renat); objectOutputStream.close(); //       ObjectInputStream ObjectInputStream objectInputStream = new ObjectInputStream( new FileInputStream("person.out")); Person igorRestored = (Person) objectInputStream.readObject(); Person renatRestored = (Person) objectInputStream.readObject(); objectInputStream.close(); //    ByteArrayOutputStream ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ObjectOutputStream objectOutputStream2 = new ObjectOutputStream(byteArrayOutputStream); objectOutputStream2.writeObject(igor); objectOutputStream2.writeObject(renat); objectOutputStream2.flush(); //    ByteArrayInputStream ObjectInputStream objectInputStream2 = new ObjectInputStream( new ByteArrayInputStream(byteArrayOutputStream.toByteArray())); Person igorRestoredFromByte = (Person) objectInputStream2.readObject(); Person renatRestoredFromByte = (Person) objectInputStream2.readObject(); objectInputStream2.close(); System.out.println("Before Serialize: " + "\n" + igor + "\n" + renat); System.out.println("After Restored From Byte: " + "\n" + igorRestoredFromByte + "\n" + renatRestoredFromByte); System.out.println("After Restored: " + "\n" + igorRestored + "\n" + renatRestored); } } 

рдирд┐рд╖реНрдХрд░реНрд╖:

 Before Serialize: Person{name='Igor', countOfNiva=2, fatherName='Raphael', home=Home@355da254} Person{name='Renat', countOfNiva=2, fatherName='Raphael', home=Home@355da254} After Restored From Byte: Person{name='Igor', countOfNiva=2, fatherName='Raphael', home=Home@27973e9b} Person{name='Renat', countOfNiva=2, fatherName='Raphael', home=Home@27973e9b} After Restored: Person{name='Igor', countOfNiva=2, fatherName='Raphael', home=Home@312b1dae} Person{name='Renat', countOfNiva=2, fatherName='Raphael', home=Home@312b1dae} 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣реЛрдо рдХреНрд▓рд╛рд╕ рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рд╡рд╕реНрддреБ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рддреЗ рд╕рдордп, рдЙрд╕рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЧреНрд░рд╛рдл рдЙрд╕рдХреЗ рд╕рд╛рде рдХреНрд░рдордмрджреНрдз рд╣реЛрддрд╛ рд╣реИред рд╣реЛрдо рдХреНрд▓рд╛рд╕ рдХреЛ Serializable рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднреА рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЕрдиреНрдпрдерд╛ java.io.NotSerializableException рдЙрддреНрдкрдиреНрди рд╣реЛрдЧреАред рдЙрджрд╛рд╣рд░рдг рдмрд╛рдЗрдЯрдПрд░реНрд░реЗрдСрдЯрдкреБрдЯрд╕реНрдЯреНрд░реАрдо рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд░рдорд╛рдВрдХрди рдХрд╛ рднреА рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред

рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЬрдм рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХреНрд░рдорд╛рдВрдХрди рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕реА рд╡рд╕реНрддреБ рдХрд╛ рд╕рдВрджрд░реНрдн рдерд╛, рддреЛ рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдмрд╣рд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ред рдпрд╣ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХреЗ рдмрд╛рдж рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╕рдорд╛рди рд▓рд┐рдВрдХ рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 After Restored From Byte: Person{name='Igor', countOfNiva=2, fatherName='Raphael', home=Home@27973e9b} Person{name='Renat', countOfNiva=2, fatherName='Raphael', home=Home@27973e9b} After Restored: Person{name='Igor', countOfNiva=2, fatherName='Raphael', home=Home@312b1dae} Person{name='Renat', countOfNiva=2, fatherName='Raphael', home=Home@312b1dae} 

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рднреА рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рджреЛ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо (рд╣рдорд╛рд░реЗ рдкрд╛рд╕ ObjectInputStream рдФрд░ ByteArrayOutputStream рд╣реИ ) рдХреЗ рд╕рд╛рде рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╣реЛрддреА рд╣реИ, рддреЛ рд╣реЛрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдпрд╣ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдо рдЗрд╕реЗ рджреЛ рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдШрд░реЗрд▓реВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкрддреЛрдВ рдкрд░ рджреЗрдЦрддреЗ рд╣реИрдВред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗ рдмрд┐рдирд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреВрд░реНрдг рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред рдмреЗрд╢рдХ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╡рд┐рд╡реЗрдХ рдкрд░ рд╣реИред

рд╕рдорд╕реНрдпрд╛

рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдпрд╣ рднреА рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдПрдХ ClassNotFoundException рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд▓рд╛рд╕ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЕрдкрдиреЗ рджреЛрд╕реНрдд рдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡реНрдпрдХреНрддрд┐ рд╡рд░реНрдЧ рдмрд╕ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

рдЗрд╕рдХреА рдХреНрд░рдордмрджреНрдзрддрд╛ред рдХреИрд╕реЗ рдмрдирд╛рдпреЗ?

рдпрджрд┐ рдЖрдк рдЦреБрдж рдХреЛ рдХреНрд░рдордмрджреНрдзрддрд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреА рд╡рд╕реНрддреБ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИред рдЖрдкрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЖрдЧреЗ рд╕рдВрдЪрд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд╛рд╕рд╡рд░реНрдб рдкрд╛рд╕ рдХрд░рдирд╛ рдмреЗрд╣рдж рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ? рдЗрд╕рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреНрд╖рдгрд┐рдХ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рджреВрд╕рд░рд╛, рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрдмрд▓ рдЗрдВрдЯреНрд░реЗрд╕реНрдЯ рдХреЛ рд╕рд╛рдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - рдПрдХреНрд╕рдЯреНрд░реВрдЬрд╝рдиреЗрдмрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ред рдЙрдирдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рддрд░реАрдХреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛ - рдХреНрд╖рдгрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди

 import java.io.*; public class Logon implements Serializable { private String login; private transient String password; public Logon(String login, String password) { this.login = login; this.password = password; } @Override public String toString() { return "Logon{" + "login='" + login + '\'' + ", password='" + password + '\'' + '}'; } public static void main(String[] args) throws IOException, ClassNotFoundException { Logon igor = new Logon("IgorIvanovich", "Khoziain"); Logon renat = new Logon("Renat", "2500RUB"); System.out.println("Before: \n" + igor); System.out.println(renat); ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("Externals.out")); out.writeObject(igor); out.writeObject(renat); out.close(); ObjectInputStream in = new ObjectInputStream(new FileInputStream("Externals.out")); igor = (Logon) in.readObject(); renat = (Logon) in.readObject(); System.out.println("After: \n" + igor); System.out.println(renat); } } 

рдирд┐рд╖реНрдХрд░реНрд╖:

 Before: Logon{login='IgorIvanovich', password='Khoziain'} Logon{login='Renat', password='2500RUB'} After: Logon{login='IgorIvanovich', password='null'} Logon{login='Renat', password='null'} 

рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ - рдмрд╛рд╣рд░реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╕реАрд░рд┐рдпрд▓рд▓рд╛рдЗрдЬрд╝реЗрд╢рди

 import java.io.*; public class Logon implements Externalizable { private String login; private String password; public Logon() { } public Logon(String login, String password) { this.login = login; this.password = password; } @Override public void writeExternal(ObjectOutput out) throws IOException { out.writeObject(login); } @Override public String toString() { return "Logon{" + "login='" + login + '\'' + ", password='" + password + '\'' + '}'; } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { login = (String) in.readObject(); } public static void main(String[] args) throws IOException, ClassNotFoundException { Logon igor = new Logon("IgorIvanovich", "Khoziain"); Logon renat = new Logon("Renat", "2500RUB"); System.out.println("Before: \n" + igor); System.out.println(renat); ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("Externals.out")); out.writeObject(igor); out.writeObject(renat); out.close(); ObjectInputStream in = new ObjectInputStream(new FileInputStream("Externals.out")); igor = (Logon) in.readObject(); renat = (Logon) in.readObject(); System.out.println("After: \n" + igor); System.out.println(renat); } } 

рдирд┐рд╖реНрдХрд░реНрд╖:

 Before: Logon{login='IgorIvanovich', password='Khoziain'} Logon{login='Renat', password='2500RUB'} After: Logon{login='IgorIvanovich', password='null'} Logon{login='Renat', password='null'} 

рдЖрдкрдХреА рдЖрдВрдЦ рдХреЛ рдкрдХрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рджреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдкрд╣рд▓рд╛ рдЕрдВрддрд░ рдХреЛрдб рдХрд╛ рдЖрдХрд╛рд░ рд╣реИред рдмрд╛рд╣рд░реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрдВ рджреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: writeExternal () рдФрд░ readExternal () ред рдПрдХреНрд╕рдЯрд░реНрдирд▓ ()) рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдлрд╝реАрд▓реНрдб рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХреИрд╕реЗ, readExternal () рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рдПред рдХреНрд╖рдгрд┐рдХ рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп , рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдХреНрд╖реЗрддреНрд░ рдпрд╛ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдордиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдорд╛рддрд╛, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рд╣реИред рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдЖрдЗрдП рдЗрд╕ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджреЗрдЦреЛ:

 Before: Logon{login='IgorIvanovich', password='Khoziain'} Logon{login='Renat', password='2500RUB'} Exception in thread "main" java.io.InvalidClassException: Logon; no valid constructor at java.io.ObjectStreamClass$ExceptionInfo.newInvalidClassException(ObjectStreamClass.java:169) at java.io.ObjectStreamClass.checkDeserialize(ObjectStreamClass.java:874) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2043) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) at Logon.main(Logon.java:45) 

рд╣рдореЗрдВ java.io.InvalidClassException рдЕрдкрд╡рд╛рдж рдорд┐рд▓рд╛ред рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИ? рдпрджрд┐ рдЖрдк рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ ObjectStreamClass рдХреНрд▓рд╛рд╕ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ:

  if (externalizable) { cons = getExternalizableConstructor(cl); } else { cons = getSerializableConstructor(cl); 

рдПрдХреНрд╕рдЯрд░реНрдиреЗрд╕реЗрдмрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП, getExternalizableConstructor () рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ , рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рдЙрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдирд╣реАрдВ рдвреВрдВрдв рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдпрд╣ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рдорд┐рд▓рддрд╛ рд╣реИред рдЖрдк рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрдХреНрд╖рд╛ рдореЗрдВ рдХреЛрдИ рднреА рдирд┐рд░реНрдорд╛рддрд╛ рди рдмрдирд╛рдПрдВ рдФрд░ рдмрд╕рдиреЗ рд╡рд╛рд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝реАрд▓реНрдб рднрд░реЗрдВ рдФрд░ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдлрд┐рд░, рдХрдХреНрд╖рд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ getExternalizableConstructor () рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред Serializable рдХреЗ рд▓рд┐рдП, getSerializableConstructor () рд╡рд┐рдзрд┐ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд▓рд╛рд╕ рдХрд╛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рд╡рд░реНрдЧ рдХреА рддрд▓рд╛рд╢ рд╣реЛрддреА рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ ClassNotFoundException рдорд┐рд▓реЗрдЧреА ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрдмрд▓ рдФрд░ рдПрдХреНрд╕рдЯрд░реНрдиреЗрдмрд▓ рдХреЗ рдмреАрдЪ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рд░рд┐рдХрд╡рд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡ рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдмрд╕ рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП, рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди, рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрд╣рд▓реЗ рдШреЛрд╖рдгрд╛ рдмрд┐рдВрджреБ рдкрд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдлрд┐рд░ рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдкреНрдд рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдЗрд╕рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рднрд▓реЗ рд╣реА рд╣рдореЗрдВ рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣рдо рдмрд╛рд╣рд░реА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд┐рдирд╛ (рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдП рдмрд┐рдирд╛ ) рд▓рд┐рдЦрдиреЗ рдФрд░ (рдкрдврд╝рдиреЗ рдХреЗ рддрд░реАрдХреЗ ) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕реАрд░рд┐рдпрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рд▓рд┐рдП "рдХрд╛рдо" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдирдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рд╕рдЦреНрддреА рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

 import java.io.*; public class Talda implements Serializable { private String name; private String description; public Talda(String name, String description) { this.name = name; this.description = description; } private void writeObject(ObjectOutputStream stream) throws IOException { stream.defaultWriteObject(); System.out.println("Our writeObject"); } private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { stream.defaultReadObject(); System.out.println("Our readObject"); } @Override public String toString() { return "Talda{" + "name='" + name + '\'' + ", description='" + description + '\'' + '}'; } public static void main(String[] args) throws IOException, ClassNotFoundException { Talda partizanka = new Talda("Partizanka", "Viiiski"); System.out.println("Before: \n" + partizanka); ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("Talda.out")); out.writeObject(partizanka); out.close(); ObjectInputStream in = new ObjectInputStream(new FileInputStream("Talda.out")); partizanka = (Talda) in.readObject(); System.out.println("After: \n" + partizanka); } } 

рдирд┐рд╖реНрдХрд░реНрд╖:

 Before: Talda{name='Partizanka', description='Viiiski'} Our writeObject Our readObject After: Talda{name='Partizanka', description='Viiiski'} 

рд╣рдорд╛рд░реЗ рдЬреЛрдбрд╝реЗ рдЧрдП рддрд░реАрдХреЛрдВ рдХреЗ рдЕрдВрджрд░, DefaultWriteObject () рдФрд░ defaultReadObject () рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реЗ рдЧрдП рддрд░реАрдХреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рд╣рд┐рдорд╢реИрд▓ рдХрд╛ рд╕рд┐рд░рд╛ рд╣реИ, рдпрджрд┐ рдЖрдк рдХреНрд░рдордмрджреНрдзрддрд╛ рдХреЗ рддрдВрддреНрд░ рдореЗрдВ рддрд▓реНрд▓реАрди рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде, рдЖрдк рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ: "рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди ... рдпрд╣ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред"

Source: https://habr.com/ru/post/hi431524/


All Articles