CodeGym/Java Blog/рдпрд╛рджреГрдЪреНрдЫрд┐рдХ/рдЬрд╛рд╡рд╛ рдордзреАрд▓ рд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рди рдЖрдгрд┐ рдбреАрд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рдирдордзреНрдпреЗ рдХрд╛рдп рдлрд░рдХ рдЖрд╣...
John Squirrels
рдкрд╛рддрд│реА 41
San Francisco

рдЬрд╛рд╡рд╛ рдордзреАрд▓ рд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рди рдЖрдгрд┐ рдбреАрд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рдирдордзреНрдпреЗ рдХрд╛рдп рдлрд░рдХ рдЖрд╣реЗ?

рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдпрд╛ рдЧреНрд░реБрдкрдордзреНрдпреЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ
рд╕рджрд╕реНрдп
рд╣рд╛рдп! рдЖрдЬрдЪреНрдпрд╛ рдзрдбреНрдпрд╛рдд, рдЖрдкрдг рдЬрд╛рд╡рд╛ рдордзреАрд▓ рд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рди рдЖрдгрд┐ рдбреАрд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рдирдмрджреНрджрд▓ рдмреЛрд▓реВ. рдЖрдкрдг рдПрдХрд╛ рд╕рд╛рдзреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдиреЗ рд╕реБрд░реБрд╡рд╛рдд рдХрд░реВ. рд╕рдордЬрд╛ рддреБрдореНрд╣реА рд╕рдВрдЧрдгрдХ рдЧреЗрдо рддрдпрд╛рд░ рдХреЗрд▓рд╛ рдЖрд╣реЗ. рдЬрд░ рддреБрдореНрд╣реА репреж рдЪреНрдпрд╛ рджрд╢рдХрд╛рдд рдореЛрдареЗ рдЭрд╛рд▓реЗ рдЕрд╕рд╛рд▓ рдЖрдгрд┐ рддреНрдпрд╛ рдХрд╛рд│рд╛рддреАрд▓ рдЧреЗрдо рдХрдиреНрд╕реЛрд▓ рдЖрдард╡рдд рдЕрд╕рд╛рд▓, рддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрджрд╛рдЪрд┐рдд рдорд╛рд╣рд┐рдд рдЕрд╕реЗрд▓ рдХреА рддреНрдпрд╛рдВрдЪреНрдпрд╛рдд рдХрд╛рд╣реАрддрд░реА рдХрдореА рдЖрд╣реЗ рдЬреЗ рдЖрдЬ рдЖрдореНрд╣реА рдЧреГрд╣реАрдд рдзрд░рддреЛ тАФ рдЧреЗрдо рдЬрддрди рдХрд░рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рд▓реЛрдб рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ :) рдирд╕рд▓реНрдпрд╛рд╕, рдпрд╛рдЪреА рдХрд▓реНрдкрдирд╛ рдХрд░рд╛! рдЬрд╛рд╡рд╛ рдордзреАрд▓ рд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рди рдЖрдгрд┐ рдбреАрд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рдирдордзреНрдпреЗ рдХрд╛рдп рдлрд░рдХ рдЖрд╣реЗ?  - рез рдорд▓рд╛ рднреАрддреА рд╡рд╛рдЯрддреЗ рдХреА рдЖрдЬ рдпрд╛ рдХреНрд╖рдорддреЗрд╢рд┐рд╡рд╛рдп рдЦреЗрд│ рдирд╢рд┐рдмрд╛рдд рдпреЗрдИрд▓! рддрд░реАрд╣реА рдЧреЗрдо "рдЬрддрди рдХрд░рдгреЗ" рдЖрдгрд┐ "рд▓реЛрдб рдХрд░рдгреЗ" рдореНрд╣рдгрдЬреЗ рдХрд╛рдп? рдмрд░рдВ, рдЖрдореНрд╣рд╛рд▓рд╛ рд╕рд╛рдорд╛рдиреНрдп рдЕрд░реНрде рд╕рдордЬрддреЛ: рдЖрдореНрд╣реА рдЬрд┐рдереЗ рд╕реЛрдбрд▓рд╛ рд╣реЛрддрд╛ рддрд┐рдереВрди рдЖрдореНрд╣рд╛рд▓рд╛ рдЦреЗрд│ рд╕реБрд░реВ рдареЗрд╡рд╛рдпрдЪрд╛ рдЖрд╣реЗ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдПрдХ рдкреНрд░рдХрд╛рд░рдЪрд╛ "рдЪреЗрдХ рдкреЙрдЗрдВрдЯ" рддрдпрд╛рд░ рдХрд░рддреЛ, рдЬреЛ рдЖрдореНрд╣реА рдЧреЗрдо рд▓реЛрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рддреЛ. рдкрдг рдХреЕрдЬреНрдпреБрдЕрд▓ рдЧреЗрдорд░рдкреЗрдХреНрд╖рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд▓рд╛ рдпрд╛рдЪрд╛ рдЕрд░реНрде рдХрд╛рдп рдЖрд╣реЗ? рдЙрддреНрддрд░ рд╕реЛрдкреЗ рдЖрд╣реЗ: рдЖрдореНрд╣реА'. рд╕рдордЬрд╛ рддреБрдореНрд╣реА рд╕реНрдЯреНрд░реЕрдЯреЗрдЬрд┐рдпрдордордзреНрдпреЗ рд╕реНрдкреЗрди рдореНрд╣рдгреВрди рдЦреЗрд│рдд рдЖрд╣рд╛рдд. рддреБрдордЪреНрдпрд╛ рдЦреЗрд│рд╛рдЪреЗ рдПрдХ рд░рд╛рдЬреНрдп рдЖрд╣реЗ: рдХреЛрдгрддреЗ рдкреНрд░рджреЗрд╢ рдХреЛрдгрд╛рдЪреНрдпрд╛ рдорд╛рд▓рдХреАрдЪреЗ рдЖрд╣реЗрдд, рдХреЛрдгрд╛рдХрдбреЗ рдХрд┐рддреА рд╕рдВрд╕рд╛рдзрдиреЗ рдЖрд╣реЗрдд, рдХреЛрдг рдХреЛрдгрд╛рд╢реА рдпреБрддреА рдЖрд╣реЗ, рдХреЛрдг рдХреЛрдгрд╛рд╢реА рдпреБрджреНрдз рдХрд░рдд рдЖрд╣реЗ рдЗ. рднрд╡рд┐рд╖реНрдпрд╛рдд рддреА рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдЧреЗрдо рд╕реБрд░реВ рдареЗрд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА рд╣реА рдорд╛рд╣рд┐рддреА, рдЖрдордЪреНрдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдордЪреА рд╕реНрдерд┐рддреА рдЬрддрди рдХреЗрд▓реА рдкрд╛рд╣рд┐рдЬреЗ. рд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рди рдЖрдгрд┐ рдбрд┐рд╕рд┐рд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рди рд╣реЗ рдиреЗрдордХреЗ рдХрд╢рд╛рд╕рд╛рдареА рдЖрд╣реЗ. рд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рди рд╣реА рдмрд╛рдЗрдЯреНрд╕рдЪреНрдпрд╛ рдХреНрд░рдорд╛рдиреЗ рдСрдмреНрдЬреЗрдХреНрдЯрдЪреА рд╕реНрдерд┐рддреА рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрд╣реЗ. рдбрд┐рд╕рд┐рд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рдирдпрд╛ рдмрд╛рдЗрдЯреНрд╕рдордзреВрди рдСрдмреНрдЬреЗрдХреНрдЯ рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрд╣реЗ. рдХреЛрдгрддреАрд╣реА Java рдСрдмреНрдЬреЗрдХреНрдЯ рдмрд╛рдЗрдЯ рдЕрдиреБрдХреНрд░рдорд╛рдд рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдЖрдореНрд╣рд╛рд▓рд╛ рдпрд╛рдЪреА рдЧрд░рдЬ рдХрд╛ рдЕрд╕реЗрд▓? рдЖрдореНрд╣реА рдПрдХрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рд╡реЗрд│рд╛ рд╕рд╛рдВрдЧрд┐рддрд▓реЗ рдЖрд╣реЗ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрд╡рддрдГрдЪ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдирд╛рд╣реАрдд. рдмрд░реНтАНрдпрд╛рдЪрджрд╛, рддреЗ рдЗрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрддрд╛рдд, рдбреЗрдЯрд╛рдЪреА рджреЗрд╡рд╛рдгрдШреЗрд╡рд╛рдг рдХрд░рддрд╛рдд. рдЖрдгрд┐ рдмрд╛рдЗрдЯ рдЕрдиреБрдХреНрд░рдо рдПрдХ рд╕реЛрдпреАрд╕реНрдХрд░ рдЖрдгрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдо рд╕реНрд╡рд░реВрдк рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ SavedGameрдСрдмреНрдЬреЗрдХреНрдЯрд▓рд╛ рдмрд╛рдЗрдЯреНрд╕рдЪреНрдпрд╛ рдЕрдиреБрдХреНрд░рдорд╛рдд рдмрджрд▓реВ рд╢рдХрддреЛ, рд╣реЗ рдмрд╛рдЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХрд╡рд░реВрди рджреБрд╕рд░реНтАНрдпрд╛ рд╕рдВрдЧрдгрдХрд╛рд╡рд░ рдкрд╛рдард╡реВ рд╢рдХрддреЛ рдЖрдгрд┐ рдирдВрддрд░ рджреБрд╕рд▒реНрдпрд╛ рд╕рдВрдЧрдгрдХрд╛рд╡рд░ рд╣реЗ рдмрд╛рдЗрдЯреНрд╕ рдкрд░рдд Java рдСрдмреНрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рдмрджрд▓реВ рд╢рдХрддреЛ! рдХрдареАрдг рд╡рд╛рдЯрддрдВ, рдмрд░реЛрдмрд░? рдЖрдгрд┐ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдВрдорд▓рд╛рдд рдЖрдгрдгреЗ рдПрдХ рд╡реЗрджрдирд╛рд╕рд╛рд░рдЦреЗ рд╡рд╛рдЯрддреЗ :/ рдЖрдирдВрджрд╛рдиреЗ, рдЕрд╕реЗ рдирд╛рд╣реА! :) рдЬрд╛рд╡рд╛ рдордзреНрдпреЗ, рджSerializableрдЕрдиреБрдХреНрд░рдорд╛рдВрдХ рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕рд╛рдареА рдЗрдВрдЯрд░рдлреЗрд╕ рдЬрдмрд╛рдмрджрд╛рд░ рдЖрд╣реЗ. рд╣рд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдЕрддреНрдпрдВрдд рд╕реЛрдкрд╛ рдЖрд╣реЗ: рддреЛ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХрдЪ рдкрджреНрдзрдд рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА! рдЖрдордЪрд╛ рдЧреЗрдо-рд╕реЗрд╡реНрд╣рд┐рдВрдЧ рд╡рд░реНрдЧ рдХрд┐рддреА рд╕реЛрдкрд╛ рджрд┐рд╕рддреЛ:
import java.io.Serializable;
import java.util.Arrays;

public class SavedGame implements Serializable {

   private static final long serialVersionUID = 1L;

   private String[] territoriesInfo;
   private String[] resourcesInfo;
   private String[] diplomacyInfo;

   public SavedGame(String[] territoriesInfo, String[] resourcesInfo, String[] diplomacyInfo){
       this.territoriesInfo = territoriesInfo;
       this.resourcesInfo = resourcesInfo;
       this.diplomacyInfo = diplomacyInfo;
   }

   public String[] getTerritoriesInfo() {
       return territoriesInfo;
   }

   public void setTerritoriesInfo(String[] territoriesInfo) {
       this.territoriesInfo = territoriesInfo;
   }

   public String[] getResourcesInfo() {
       return resourcesInfo;
   }

   public void setResourcesInfo(String[] resourcesInfo) {
       this.resourcesInfo = resourcesInfo;
   }

   public String[] getDiplomacyInfo() {
       return diplomacyInfo;
   }

   public void setDiplomacyInfo(String[] diplomacyInfo) {
       this.diplomacyInfo = diplomacyInfo;
   }

   @Override
   public String toString() {
       return "SavedGame{" +
               "territoriesInfo=" + Arrays.toString(territoriesInfo) +
               ", resourcesInfo=" + Arrays.toString(resourcesInfo) +
               ", diplomacyInfo=" + Arrays.toString(diplomacyInfo) +
               '}';
   }
}
рдкреНрд░рджреЗрд╢, рд╕рдВрд╕рд╛рдзрдиреЗ рдЖрдгрд┐ рдореБрддреНрд╕рджреНрджреАрдкрдгрд╛рдмрджреНрджрд▓ рдорд╛рд╣рд┐рддреАрд╕рд╛рдареА рддреАрди рдЕреЕрд░реЗ рдЬрдмрд╛рдмрджрд╛рд░ рдЖрд╣реЗрдд. рд╕реАрд░рд┐рдЕрд▓рд╛рдпрдЭ рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдЗрдВрдЯрд░рдлреЗрд╕ рдЬрд╛рд╡рд╛ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирд▓рд╛ рд╕рд╛рдВрдЧрддреЛ: " рд╕рд░реНрд╡ рдХрд╛рд╣реА рдареАрдХ рдЖрд╣реЗ тАФ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рдпрд╛ рд╡рд░реНрдЧрд╛рдЪреНрдпрд╛ рд╡рд╕реНрддреВ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд ". рдПрдХрд╛ рдЗрдВрдЯрд░рдлреЗрд╕рд╢рд┐рд╡рд╛рдп рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд┐рдЪрд┐рддреНрд░ рджрд┐рд╕рдд рдЖрд╣реЗ :/ рддреЗ рдХрд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ? рдпрд╛ рдкреНрд░рд╢реНрдирд╛рдЪреЗ рдЙрддреНрддрд░ рд╡рд░ рдкрд╛рд╣рд┐рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ: рддреЗ рдлрдХреНрдд Java рдЖрднрд╛рд╕реА рдорд╢реАрдирд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдорд╛рд╣рд┐рддреА рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рдЖрдордЪреНрдпрд╛ рдорд╛рдЧреАрд▓ рдзрдбреНрдпрд╛рдВрдкреИрдХреА рдПрдХрд╛рдордзреНрдпреЗ, рдЖрдореНрд╣реА рдорд╛рд░реНрдХрд░ рдЗрдВрдЯрд░рдлреЗрд╕рдЪрд╛ рдереЛрдбрдХреНрдпрд╛рдд рдЙрд▓реНрд▓реЗрдЦ рдХреЗрд▓рд╛ рдЖрд╣реЗ . рд╣реЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рд╣рд┐рддреАрдЪреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрд╣реЗрдд рдЬреЗ рдЖрдордЪреНрдпрд╛ рд╡рд░реНрдЧрд╛рдВрдирд╛ рдлрдХреНрдд рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рд╣рд┐рддреАрд╕рд╣ рдЪрд┐рдиреНрд╣рд╛рдВрдХрд┐рдд рдХрд░рддрд╛рдд рдЬреЗ рднрд╡рд┐рд╖реНрдпрд╛рдд Java рдорд╢реАрдирд╕рд╛рдареА рдЙрдкрдпреБрдХреНрдд рдард░рддреАрд▓. рддреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдВрдорд▓рд╛рдд рдЖрдгрдгреНрдпрд╛рдЪреНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдкрджреНрдзрддреА рдирд╛рд╣реАрдд.SerializableрддреНрдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕рдкреИрдХреА рдПрдХ рдЖрд╣реЗ. рдЖрдгрдЦреА рдПрдХ рдорд╣рддреНрддреНрд╡рд╛рдЪрд╛ рдореБрджреНрджрд╛: private static final long serialVersionUIDрдЖрдкрдг рд╡рд░реНрдЧрд╛рдд рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдЪреА рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЖрд╣реЗ? рддреНрдпрд╛рдЪреА рдЧрд░рдЬ рдХрд╛ рдЖрд╣реЗ? рдпрд╛ рдлреАрд▓реНрдбрдордзреНрдпреЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╡рд░реНрдЧрд╛рдЪреНрдпрд╛ рдЖрд╡реГрддреНрддреАрд╕рд╛рдареА рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХ рдЖрд╣реЗ . рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдЧреВ рдХрд░рдгрд╛рд░реНтАНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╡рд░реНрдЧрд╛рд▓рд╛ SerializableрдПрдХ рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХ рдЕрд╕рддреЛ version. рддреНрдпрд╛рдЪреА рдЧрдгрдирд╛ рд╡рд░реНрдЧрд╛рддреАрд▓ рд╕рд╛рдордЧреНрд░реАрдЪреНрдпрд╛ рдЖрдзрд╛рд░реЗ рдХреЗрд▓реА рдЬрд╛рддреЗ: рддреНрдпрд╛рдЪреЗ рдлреАрд▓реНрдб, рддреЗ рдЬреНрдпрд╛ рдХреНрд░рдорд╛рдиреЗ рдШреЛрд╖рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд, рдкрджреНрдзрддреА рдЗ. рдЬрд░ рдЖрдореНрд╣реА рдлреАрд▓реНрдбрдЪрд╛ рдкреНрд░рдХрд╛рд░ рдЖрдгрд┐/рдХрд┐рдВрд╡рд╛ рдЖрдордЪреНрдпрд╛ рд╡рд░реНрдЧрд╛рддреАрд▓ рдлреАрд▓реНрдбрдЪреА рд╕рдВрдЦреНрдпрд╛ рдмрджрд▓рд▓реА, рддрд░ рдЖрд╡реГрддреНрддреА рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХ рддреНрд╡рд░рд┐рдд рдмрджрд▓рддреЛ. . serialVersionUIDрд╡рд░реНрдЧ рдХреНрд░рдорд╡рд╛рд░реАрдд рдЕрд╕рддрд╛рдирд╛ рджреЗрдЦреАрд▓ рд▓рд┐рд╣рд┐рд▓реЗ рдЬрд╛рддреЗ. рдЬреЗрд╡реНрд╣рд╛ рдЖрдкрдг рдбрд┐рд╕рд┐рд░рд┐рдпрд▓рд╛рдЗрдЬ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЛ, рдореНрд╣рдгрдЬреЗ, рдмрд╛рдЗрдЯреНрд╕рдЪреНрдпрд╛ рд╕рдВрдЪрд╛рдордзреВрди рдСрдмреНрдЬреЗрдХреНрдЯ рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХрд░рддреЛ, рддреЗрд╡реНрд╣рд╛ рддреНрдпрд╛рдЪреНрдпрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рд╡рд╕реНрддреВрдЪреА serialVersionUIDрддреБрд▓рдирд╛ рдореВрд▓реНрдпрд╛рд╢реА рдХреЗрд▓реА рдЬрд╛рддреЗ.serialVersionUIDрдЖрдордЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдорд╛рддреАрд▓ рд╡рд░реНрдЧрд╛рд╕рд╛рдареА. рдЬрд░ рдореВрд▓реНрдпреЗ рдЬреБрд│рдд рдирд╕рддреАрд▓, рддрд░ java.io. InvalidClassException рдЯрд╛рдХрд▓реЗ рдЬрд╛рдИрд▓. рдпрд╛рдЪреЗ рдЙрджрд╛рд╣рд░рдг рдЖрдкрдг рдЦрд╛рд▓реА рдкрд╛рд╣реВ. рд╣реЗ рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рд╡рд░реНрдЧрд╛рдд рд╡реНрд╣рд░реНрдЬрди рдЖрдпрдбреЗрдВрдЯрд┐рдлрд╛рдпрд░ рдореЕрдиреНрдпреБрдЕрд▓реА рд╕реЗрдЯ рдХрд░рддреЛ. рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рддреЗ рдлрдХреНрдд 1 рдЪреНрдпрд╛ рдмрд░реЛрдмрд░реАрдЪреЗ рдЕрд╕реЗрд▓ (рдкрд░рдВрддреБ рддреБрдореНрд╣реА рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рдбрдгрд╛рд░реА рдХреЛрдгрддреАрд╣реА рд╕рдВрдЦреНрдпрд╛ рдмрджрд▓реВ рд╢рдХрддрд╛). рдмрд░рдВ, рдЖрдордЪреНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯрд▓рд╛ рдХреНрд░рдордмрджреНрдз рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдгреНрдпрд╛рдЪреА SavedGameрдЖрдгрд┐ рдХрд╛рдп рд╣реЛрддреЗ рддреЗ рдкрд╛рд╣рдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ!
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class Main {

   public static void main(String[] args) throws IOException {

       // Create our object
       String[] territoryInfo = {"Spain has 6 provinces", "Russia has 10 provinces", "France has 8 provinces"};
       String[] resourcesInfo = {"Spain has 100 gold", "Russia has 80 gold", "France has 90 gold"};
       String[] diplomacyInfo = {"France is at war with Russia, Spain has taken a neutral position"};

       SavedGame savedGame = new SavedGame(territoryInfo, resourcesInfo, diplomacyInfo);

       // Create 2 streams to serialize the object and save it to a file
       FileOutputStream outputStream = new FileOutputStream("C:\\Users\\Username\\Desktop\\save.ser");
       ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);

       // Save the game to a file
       objectOutputStream.writeObject(savedGame);

       // Close the stream and free resources
       objectOutputStream.close();
   }
}
рдЬрд╕реЗ рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддрд╛, рдЖрдореНрд╣реА 2 рдкреНрд░рд╡рд╛рд╣ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЖрд╣реЗрдд: FileOutputStreamрдЖрдгрд┐ ObjectOutputStream. рдкрд╣рд┐рд▓рд╛ рдлрд╛рдИрд▓рдордзреНрдпреЗ рдбреЗрдЯрд╛ рд▓рд┐рд╣реВ рд╢рдХрддреЛ рдЖрдгрд┐ рджреБрд╕рд░рд╛ рдСрдмреНрдЬреЗрдХреНрдЯрд▓рд╛ рдмрд╛рдЗрдЯреНрд╕рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддреЛ. рддреБрдореНрд╣реА рдпрд╛рдЖрдзреА рд╕рд╛рд░рдЦреА "рдиреЗрд╕реНрдЯреЗрдб" рд░рдЪрдирд╛ рдкрд╛рд╣рд┐рд▓реА рдЖрд╣реЗрдд, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, new BufferedReader(new InputStreamReader(...))рдорд╛рдЧреАрд▓ рдзрдбреНрдпрд╛рдВрдордзреНрдпреЗ, рддреНрдпрд╛рдореБрд│реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдШрд╛рдмрд░реВ рдирдпреЗ :) рджреЛрди рдкреНрд░рд╡рд╛рд╣рд╛рдВрдЪреА рдЕрд╢реА "рд╕рд╛рдЦрд│реА" рддрдпрд╛рд░ рдХрд░реВрди, рдЖрдореНрд╣реА рджреЛрдиреНрд╣реА рдХрд╛рд░реНрдпреЗ рдХрд░рддреЛ: рдЖрдореНрд╣реА рдСрдмреНрдЬреЗрдХреНрдЯрд▓рд╛ SavedGameрд╕реЗрдЯрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддреЛ рдСрдл рдмрд╛рдЗрдЯреНрд╕ рдЖрдгрд┐ рдкрджреНрдзрдд рд╡рд╛рдкрд░реВрди рдлрд╛рдЗрд▓рдордзреНрдпреЗ рд╕реЗрд╡реНрд╣ рдХрд░рд╛ writeObject(). рдЖрдгрд┐, рддрд╕реЗ, рдЖрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рдорд┐рд│рд╛рд▓реЗ рддреЗ рдЖрдореНрд╣реА рдкрд╛рд╣рд┐рд▓реЗ рдирд╛рд╣реА! рдлрд╛рдЗрд▓ рдкрд╛рд╣рдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ! *рдЯреАрдк: рддреБрдореНрд╣рд╛рд▓рд╛ рдлрд╛рдЗрд▓ рдЖрдЧрд╛рдК рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА. рдЬрд░ рддреНрдпрд╛ рдирд╛рд╡рд╛рдЪреА рдлрд╛рдЗрд▓ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдирд╕реЗрд▓, рддрд░ рддреА рдЖрдкреЛрдЖрдк рддрдпрд╛рд░ рд╣реЛрдИрд▓* рдЖрдгрд┐ рддреНрдпрд╛рддреАрд▓ рд╕рд╛рдордЧреНрд░реА рдпреЗрдереЗ рдЖрд╣реЗ!
┬м╨╜ sr SavedGame [ diplomacyInfot [Ljava/lang/String;[ resourcesInfoq ~ [ territoriesInfoq ~ xpur [Ljava.lang.String;┬н╨вV╨╖╨╣{G xp t p╨а┬д╨б╨В╨а┬░╨а╨Е╨бтАа╨а╤С╨б╨П ╨а╨Ж╨а╤Х╨б╨Л╨а┬╡╨бтАЪ ╨б╨Г ╨а ╨а╤Х╨б╨Г╨б╨Г╨а╤С╨а┬╡╨атДЦ, ╨а┬Ш╨б╨Г╨а╤Ч╨а┬░╨а╨Е╨а╤С╨б╨П ╨а┬╖╨а┬░╨а╨Е╨б╨П╨а┬╗╨а┬░ ╨а╤Ч╨а╤Х╨а┬╖╨а╤С╨бтАа╨а╤С╨б╨Л ╨а╨Е╨а┬╡╨атДЦ╨бтАЪ╨б╨В╨а┬░╨а┬╗╨а╤С╨бтАЪ╨а┬╡╨бтАЪ╨а┬░uq ~ t "╨а╨И ╨а┬Ш╨б╨Г╨а╤Ч╨а┬░╨а╨Е╨а╤С╨а╤С 100 ╨а┬╖╨а╤Х╨а┬╗╨а╤Х╨бтАЪ╨а┬░t ╨а╨И ╨а ╨а╤Х╨б╨Г╨б╨Г╨а╤С╨а╤С 80 ╨а┬╖╨а╤Х╨а┬╗╨а╤Х╨бтАЪ╨а┬░t !╨а╨И ╨а┬д╨б╨В╨а┬░╨а╨Е╨бтАа╨а╤С╨а╤С 90 ╨а┬╖╨а╤Х╨а┬╗╨а╤Х╨бтАЪ╨а┬░uq ~ t &╨а╨И ╨а┬Ш╨б╨Г╨а╤Ч╨а┬░╨а╨Е╨а╤С╨а╤С 6 ╨а╤Ч╨б╨В╨а╤Х╨а╨Ж╨а╤С╨а╨Е╨бтАа╨а╤С╨атДЦt %╨а╨И ╨а ╨а╤Х╨б╨Г╨б╨Г╨а╤С╨а╤С 10 ╨а╤Ч╨б╨В╨а╤Х╨а╨Ж╨а╤С╨а╨Е╨бтАа╨а╤С╨атДЦt &╨а╨И ╨а┬д╨б╨В╨а┬░╨а╨Е╨бтАа╨а╤С╨а╤С 8 ╨а╤Ч╨б╨В╨а╤Х╨а╨Ж╨а╤С╨а╨Е╨бтАа╨а╤С╨атДЦ
рдЙрд╣-рдУрд╣ :( рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА рдЖрдордЪрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛рд░реНрдп рдХрд░рдд рдирд╛рд╣реА :( рдЦрд░рдВ рддрд░, рддреЗ рдХрд╛рд░реНрдп рдХрд░рдд рдЖрд╣реЗ. рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдард╡рдд рдЕрд╕реЗрд▓ рдХреА рдЖрдореНрд╣реА рдлрд╛рдЗрд▓рд╡рд░ рдХреЗрд╡рд│ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд┐рдВрд╡рд╛ рдордЬрдХреВрд░ рдирд╡реНрд╣реЗ рддрд░ рдмрд╛рдЗрдЯреНрд╕рдЪрд╛ рдПрдХ рд╕рдВрдЪ рдкрд╛рдард╡рд▓рд╛ рдЖрд╣реЗ? рдмрд░рдВ, рд╣реЗ рддреЗрдЪ рдЖрд╣реЗ. рдмрд╛рдЗрдЯреНрд╕рдЪрд╛ рд╕рдВрдЪ рдЕрд╕рд╛ рджрд┐рд╕рддреЛ :) рд╣рд╛ рдЖрдордЪрд╛ рд╕реЗрд╡реНрд╣ рдХреЗрд▓реЗрд▓рд╛ рдЧреЗрдо рдЖрд╣реЗ! рдЬрд░ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪрд╛ рдореВрд│ рдСрдмреНрдЬреЗрдХреНрдЯ рд░рд┐рд╕реНрдЯреЛрдЕрд░ рдХрд░рд╛рдпрдЪрд╛ рдЕрд╕реЗрд▓, рдореНрд╣рдгрдЬреЗ рдЖрдореНрд╣реА рдЬрд┐рдереЗ рд╕реЛрдбрд▓рд╛ рд╣реЛрддрд╛ рддреЛ рдЧреЗрдо рд╕реБрд░реВ рдХрд░реВрди рд╕реБрд░реВ рдареЗрд╡рд╛рдпрдЪрд╛ рдЕрд╕реЗрд▓, рддрд░ рдЖрдореНрд╣рд╛рд▓рд╛ рд░рд┐рд╡реНрд╣рд░реНрд╕ рдкреНрд░реЛрд╕реЗрд╕рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ: рдбреАрд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рди. рдЖрдордЪреНрдпрд╛рдордзреНрдпреЗ рддреЗ рдХрд╕реЗ рджрд┐рд╕реЗрд▓ рддреЗ рдпреЗрдереЗ рдЖрд╣реЗ . рдХреЗрд╕:
import java.io.*;

public class Main {

   public static void main(String[] args) throws IOException, ClassNotFoundException {

       FileInputStream fileInputStream = new FileInputStream("C:\\Users\\Username\\Desktop\\save.ser");
       ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);

       SavedGame savedGame = (SavedGame) objectInputStream.readObject();

       System.out.println(savedGame);
   }
}
рдЖрдгрд┐ рдпреЗрдереЗ рдкрд░рд┐рдгрд╛рдо рдЖрд╣реЗ!
SavedGame{territoriesInfo=["Spain has 6 provinces, Russia has 10 provinces, France has 8 provinces], resourcesInfo=[Spain has 100 gold, Russia has 80 gold, France has 90 gold], diplomacyInfo=[France is at war with Russia, Spain has taken a neutral position]}
рдЙрддреНрдХреГрд╖реНрдЯ! рдЖрдореНрд╣реА рдкреНрд░рдердо рдЖрдордЪреНрдпрд╛ рдЧреЗрдордЪреА рд╕реНрдерд┐рддреА рдлрд╛рдИрд▓рдордзреНрдпреЗ рдЬрддрди рдХрд░рдгреНрдпрд╛рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЖрдгрд┐ рдирдВрддрд░ рддреА рдлрд╛рдЗрд▓рдордзреВрди рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХреЗрд▓реА. рдЖрддрд╛ рдЖрдкрдг рд╕рдорд╛рди рдЧреЛрд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВрдпрд╛, рдкрд░рдВрддреБ рдЖрдордЪреНрдпрд╛ рд╡рд░реНрдЧрд╛рд╕рд╛рдареА рдЖрд╡реГрддреНрддреА рдУрд│рдЦрдХрд░реНрддреНрдпрд╛рд╢рд┐рд╡рд╛рдп SavedGame. рдЖрдореНрд╣реА рдЖрдордЪреЗ рджреЛрдиреНрд╣реА рд╡рд░реНрдЧ рдкреБрдиреНрд╣рд╛ рд▓рд┐рд╣рд┐рдгрд╛рд░ рдирд╛рд╣реА. рддреНрдпрд╛рдВрдЪрд╛ рдХреЛрдб рддреЛрдЪ рд░рд╛рд╣реАрд▓, рдкрдг рдЖрдореНрд╣реА рд╡рд░реНрдЧрд╛рддреВрди рдХрд╛рдвреВрди private static final long serialVersionUIDрдЯрд╛рдХреВ SavedGame. рд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рди рдирдВрддрд░ рдЖрдордЪреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдпреЗрдереЗ рдЖрд╣реЗ:
┬м╨╜ sr SavedGame╤ЦтВмM╤Цu╨ЮmтА░ [ diplomacyInfot [Ljava/lang/String;[ resourcesInfoq ~ [ territoriesInfoq ~ xpur [Ljava.lang.String;┬н╨вV╨╖╨╣{G xp t p╨а┬д╨б╨В╨а┬░╨а╨Е╨бтАа╨а╤С╨б╨П ╨а╨Ж╨а╤Х╨б╨Л╨а┬╡╨бтАЪ ╨б╨Г ╨а ╨а╤Х╨б╨Г╨б╨Г╨а╤С╨а┬╡╨атДЦ, ╨а┬Ш╨б╨Г╨а╤Ч╨а┬░╨а╨Е╨а╤С╨б╨П ╨а┬╖╨а┬░╨а╨Е╨б╨П╨а┬╗╨а┬░ ╨а╤Ч╨а╤Х╨а┬╖╨а╤С╨бтАа╨а╤С╨б╨Л ╨а╨Е╨а┬╡╨атДЦ╨бтАЪ╨б╨В╨а┬░╨а┬╗╨а╤С╨бтАЪ╨а┬╡╨бтАЪ╨а┬░uq ~ t "╨а╨И ╨а┬Ш╨б╨Г╨а╤Ч╨а┬░╨а╨Е╨а╤С╨а╤С 100 ╨а┬╖╨а╤Х╨а┬╗╨а╤Х╨бтАЪ╨а┬░t ╨а╨И ╨а ╨а╤Х╨б╨Г╨б╨Г╨а╤С╨а╤С 80 ╨а┬╖╨а╤Х╨а┬╗╨а╤Х╨бтАЪ╨а┬░t !╨а╨И ╨а┬д╨б╨В╨а┬░╨а╨Е╨бтАа╨а╤С╨а╤С 90 ╨а┬╖╨а╤Х╨а┬╗╨а╤Х╨бтАЪ╨а┬░uq ~ t &╨а╨И ╨а┬Ш╨б╨Г╨а╤Ч╨а┬░╨а╨Е╨а╤С╨а╤С 6 ╨а╤Ч╨б╨В╨а╤Х╨а╨Ж╨а╤С╨а╨Е╨бтАа╨а╤С╨атДЦt %╨а╨И ╨а ╨а╤Х╨б╨Г╨б╨Г╨а╤С╨а╤С 10 ╨а╤Ч╨б╨В╨а╤Х╨а╨Ж╨а╤С╨а╨Е╨бтАа╨а╤С╨атДЦt &╨а╨И ╨а┬д╨б╨В╨а┬░╨а╨Е╨бтАа╨а╤С╨а╤С 8 ╨а╤Ч╨б╨В╨а╤Х╨а╨Ж╨а╤С╨а╨Е╨бтАа╨а╤С╨атДЦ
рдкрд░рдВрддреБ рдЬреЗрд╡реНрд╣рд╛ рдЖрдкрдг рддреЗ рдбреАрд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЛ рддреЗрд╡реНрд╣рд╛ рдХрд╛рдп рд╣реЛрддреЗ рддреЗ рдкрд╣рд╛:
InvalidClassException: local class incompatible: stream classdesc serialVersionUID = -196410440475012755, local class serialVersionUID = -6675950253085108747
рдЖрдореНрд╣реА рд╡рд░ рдЙрд▓реНрд▓реЗрдЦ рдХреЗрд▓реЗрд▓рд╛ рд╣рд╛ рдЕрдкрд╡рд╛рдж рдЖрд╣реЗ. рддрд╕реЗ, рдЖрдореНрд╣реА рдХрд╛рд╣реАрддрд░реА рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЧрдорд╛рд╡рд▓реЗ. рд╣реЗ рд╕рдордЬрддреЗ рдХреА рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдЖрдгрд┐ рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡реНрд╣ рд╕рд╣рдЬрдкрдгреЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд: рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Java рдордзреНрдпреЗ рдХрджрд╛рдЪрд┐рдд рдХрд╛рд╣реА рдкреНрд░рдХрд╛рд░рдЪреЗ рдЕрдВрдЧрднреВрдд рдпрдВрддреНрд░рдгрд╛ рдЖрд╣реЗ. рдкрдг рдЬрд░ рдЖрдкрд▓реНрдпрд╛ serializableрд╡рд░реНрдЧрд╛рдд рдЖрджрд┐рдо рдирд╕реВрди рдЗрддрд░ рд╡рд╕реНрддреВрдВрдЪреЗ рд╕рдВрджрд░реНрдн рдЕрд╕рддреАрд▓ рддрд░? рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрдордЪреНрдпрд╛ рд╡рд░реНрдЧрд╛рд╕реЛрдмрдд рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрд╡рддрдВрддреНрд░ TerritoriesInfo, ResourcesInfoрдЖрдгрд┐ DiplomacyInfoрд╡рд░реНрдЧ рддрдпрд╛рд░ рдХрд░реВ SavedGame.
public class TerritoriesInfo {

   private String info;

   public TerritoriesInfo(String info) {
       this.info = info;
   }

   public String getInfo() {
       return info;
   }

   public void setInfo(String info) {
       this.info = info;
   }

   @Override
   public String toString() {
       return "TerritoriesInfo{" +
               "info='" + info + '\'' +
               '}';
   }
}

public class ResourcesInfo {

   private String info;

   public ResourcesInfo(String info) {
       this.info = info;
   }

   public String getInfo() {
       return info;
   }

   public void setInfo(String info) {
       this.info = info;
   }

   @Override
   public String toString() {
       return "ResourcesInfo{" +
               "info='" + info + '\'' +
               '}';
   }
}

public class DiplomacyInfo {

   private String info;

   public DiplomacyInfo(String info) {
       this.info = info;
   }

   public String getInfo() {
       return info;
   }

   public void setInfo(String info) {
       this.info = info;
   }

   @Override
   public String toString() {
       return "DiplomacyInfo{" +
               "info='" + info + '\'' +
               '}';
   }
}
рдЖрдгрд┐ рдЖрддрд╛ рдПрдХ рдкреНрд░рд╢реНрди рдЙрднрд╛ рд░рд╛рд╣рддреЛ: рдЬрд░ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреНрдпрд╛ рдмрджрд▓рд▓реЗрд▓реНрдпрд╛ рд╡рд░реНрдЧрд╛рд▓рд╛ рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рд╛рдпрдЪреА рдЕрд╕реЗрд▓ рддрд░ рд╣реЗ рд╕рд░реНрд╡ рд╡рд░реНрдЧ рдЕрд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗрдд рдХрд╛ ?SerializableSavedGame
import java.io.Serializable;
import java.util.Arrays;

public class SavedGame implements Serializable {

   private TerritoriesInfo territoriesInfo;
   private ResourcesInfo resourcesInfo;
   private DiplomacyInfo diplomacyInfo;

   public SavedGame(TerritoriesInfo territoriesInfo, ResourcesInfo resourcesInfo, DiplomacyInfo diplomacyInfo) {
       this.territoriesInfo = territoriesInfo;
       this.resourcesInfo = resourcesInfo;
       this.diplomacyInfo = diplomacyInfo;
   }

   public TerritoriesInfo getTerritoriesInfo() {
       return territoriesInfo;
   }

   public void setTerritoriesInfo(TerritoriesInfo territoriesInfo) {
       this.territoriesInfo = territoriesInfo;
   }

   public ResourcesInfo getResourcesInfo() {
       return resourcesInfo;
   }

   public void setResourcesInfo(ResourcesInfo resourcesInfo) {
       this.resourcesInfo = resourcesInfo;
   }

   public DiplomacyInfo getDiplomacyInfo() {
       return diplomacyInfo;
   }

   public void setDiplomacyInfo(DiplomacyInfo diplomacyInfo) {
       this.diplomacyInfo = diplomacyInfo;
   }

   @Override
   public String toString() {
       return "SavedGame{" +
               "territoriesInfo=" + territoriesInfo +
               ", resourcesInfo=" + resourcesInfo +
               ", diplomacyInfo=" + diplomacyInfo +
               '}';
   }
}
рдмрд░рдВ, рддреНрдпрд╛рдЪреА рдЪрд╛рдЪрдгреА рдХрд░реВрдпрд╛! рдЪрд▓рд╛ рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЬрд╕реЗ рдЖрд╣реЗ рддрд╕реЗ рд╕реЛрдбреВ рдЖрдгрд┐ SavedGameрдСрдмреНрдЬреЗрдХреНрдЯ рд╕реАрд░рд┐рдпрд▓ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВрдпрд╛:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class Main {

   public static void main(String[] args) throws IOException {

       // Create our object
       TerritoryInfo territoryInfo = new TerritoryInfo("Spain has 6 provinces, Russia has 10 provinces, France has 8 provinces");
       ResourceInfo resourceInfo = new ResourceInfo("Spain has 100 gold, Russia has 80 gold, France has 90 gold");
       DiplomacyInfo diplomacyInfo =  new DiplomacyInfo("France is at war with Russia, Spain has taken a neutral position");


       SavedGame savedGame = new SavedGame(territoriesInfo, resourcesInfo, diplomacyInfo);

       FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\Username\\Desktop\\save.ser");
       ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);

       objectOutputStream.writeObject(savedGame);

       objectOutputStream.close();
   }
}
рдкрд░рд┐рдгрд╛рдо:
Exception in thread "main" java.io.NotSerializableException: DiplomacyInfo
рддреЗ рдХрд╛рдо рдХреЗрд▓реЗ рдирд╛рд╣реА! рдореБрд│рд╛рдд, рд╣реЗрдЪ рдЖрдордЪреНрдпрд╛ рдкреНрд░рд╢реНрдирд╛рдЪреЗ рдЙрддреНрддрд░ рдЖрд╣реЗ. рдЬреЗрд╡реНрд╣рд╛ рдПрдЦрд╛рджреА рд╡рд╕реНрддреВ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ, рддреЗрд╡реНрд╣рд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рджреНрд╡рд╛рд░реЗ рд╕рдВрджрд░реНрднрд┐рдд рд╕рд░реНрд╡ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдЖрдгрд┐ рдЬрд░ рддреНрдпрд╛ рд╡рд╕реНрддреВ рдЗрддрд░ рд╡рд╕реНрддреВрдВрдЪрд╛ рд╕рдВрджрд░реНрдн рджреЗрдд рдЕрд╕рддреАрд▓, рддрд░ рддреНрдпрд╛ рджреЗрдЦреАрд▓ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд. рдЖрдгрд┐ рддреНрдпрд╛рдореБрд│реЗ рдЬрд╛рд╣рд┐рд░рд╛рдд рдЕрдирдВрдд. рдпрд╛ рд╕рд╛рдЦрд│реАрддреАрд▓ рд╕рд░реНрд╡ рд╡рд░реНрдЧ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗSerializable , рдЕрдиреНрдпрдерд╛ рддреНрдпрд╛рдВрдирд╛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдгреЗ рдЕрд╢рдХреНрдп рд╣реЛрдИрд▓ рдЖрдгрд┐ рдЕрдкрд╡рд╛рдж рдЯрд╛рдХрд▓рд╛ рдЬрд╛рдИрд▓. рддрд╕реЗ, рдпрд╛рдореБрд│реЗ рд░рд╕реНрддреНрдпрд╛рд╡рд░ рд╕рдорд╕реНрдпрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛрдК рд╢рдХрддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрдореНрд╣реА рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рдд рдЕрд╕рддрд╛рдирд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рд╡рд░реНрдЧрд╛рдЪрд╛ рднрд╛рдЧ рдЖрд╡рд╢реНрдпрдХ рдирд╕рд▓реНрдпрд╛рд╕ рдЖрдореНрд╣реА рдХрд╛рдп рдХрд░рд╛рд╡реЗ? рдХрд┐рдВрд╡рд╛, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, TerritoryInfoрдХрд╛рд╣реА рддреГрддреАрдп-рдкрдХреНрд╖ рд▓рд╛рдпрдмреНрд░рд░реАрдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди рд╡рд░реНрдЧ рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЖрд▓рд╛ рддрд░ рдХрд╛рдп рд╣реЛрдИрд▓. рдЖрдгрд┐ рдкреБрдвреЗ рд╕рдордЬрд╛ рдХреА рддреЗ рдирд╛рд╣реА SerializableрдЖрдгрд┐ рддреНрдпрд╛рдиреБрд╕рд╛рд░, рдЖрдкрдг рддреЗ рдмрджрд▓реВ рд╢рдХрдд рдирд╛рд╣реА. рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА рдЖрдореНрд╣реА TerritoryInfoрдЖрдордЪреНрдпрд╛рдордзреНрдпреЗ рдлреАрд▓реНрдб рдЬреЛрдбреВ рд╢рдХрдд рдирд╛рд╣реАSavedGameрд╡рд░реНрдЧ, рдХрд╛рд░рдг рдЕрд╕реЗ рдХреЗрд▓реНрдпрд╛рдиреЗ рд╕рдВрдкреВрд░реНрдг SavedGameрд╡рд░реНрдЧ рдиреЙрди-рд╕рд┐рд░рд┐рдЕрд▓рд╛рдпрдЭреЗрдмрд▓ рд╣реЛрдИрд▓! рд╣реА рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЖрд╣реЗ :/ рдЬрд╛рд╡рд╛ рдордзреАрд▓ рд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рди рдЖрдгрд┐ рдбреАрд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рдирдордзреНрдпреЗ рдХрд╛рдп рдлрд░рдХ рдЖрд╣реЗ?  - 2Java рдордзреНрдпреЗ, рдХреАрд╡рд░реНрдб рд╡рд╛рдкрд░реВрди рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд transient. рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рд╡рд░реНрдЧрд╛рдЪреНрдпрд╛ рдлреАрд▓реНрдбрдордзреНрдпреЗ рд╣рд╛ рдХреАрд╡рд░реНрдб рдЬреЛрдбрд▓реНрдпрд╛рд╕, рддреЗ рдлреАрд▓реНрдб рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдгрд╛рд░ рдирд╛рд╣реА. SavedGameрд╡рд░реНрдЧрд╛рддреАрд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдлреАрд▓реНрдб рдХреНрд╖рдгрд┐рдХ рдмрдирд╡рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВрдпрд╛ . рдордЧ рдЖрдореНрд╣реА рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдЖрдгрд┐ рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХрд░реВ.
import java.io.Serializable;

public class SavedGame implements Serializable {

   private transient TerritoriesInfo territoriesInfo;
   private ResourcesInfo resourcesInfo;
   private DiplomacyInfo diplomacyInfo;

   public SavedGame(TerritoriesInfo territoriesInfo, ResourcesInfo resourcesInfo, DiplomacyInfo diplomacyInfo) {
       this.territoriesInfo = territoriesInfo;
       this.resourcesInfo = resourcesInfo;
       this.diplomacyInfo = diplomacyInfo;
   }

   // ...getters, setters, toString()
}



import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class Main {

   public static void main(String[] args) throws IOException {

       // Create our object
       TerritoryInfo territoryInfo = new TerritoryInfo("Spain has 6 provinces, Russia has 10 provinces, France has 8 provinces");
       ResourceInfo resourceInfo = new ResourceInfo("Spain has 100 gold, Russia has 80 gold, France has 90 gold");
       DiplomacyInfo diplomacyInfo =  new DiplomacyInfo("France is at war with Russia, Spain has taken a neutral position");


       SavedGame savedGame = new SavedGame(territoriesInfo, resourcesInfo, diplomacyInfo);

       FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\Username\\Desktop\\save.ser");
       ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);

       objectOutputStream.writeObject(savedGame);

       objectOutputStream.close();
   }
}


import java.io.*;

public class Main {

   public static void main(String[] args) throws IOException, ClassNotFoundException {

       FileInputStream fileInputStream = new FileInputStream("C:\\Users\\Username\\Desktop\\save.ser");
       ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);

       SavedGame savedGame = (SavedGame) objectInputStream.readObject();

       System.out.println(savedGame);

       objectInputStream.close();


   }
}
рдЖрдгрд┐ рдпреЗрдереЗ рдкрд░рд┐рдгрд╛рдо рдЖрд╣реЗ:
SavedGame{territoriesInfo=null, resourcesInfo=ResourcesInfo{info='Spain has 100 gold, Russia has 80 gold, France has 90 gold'}, diplomacyInfo=DiplomacyInfo{info='France is at war with Russia, Spain has taken a neutral position'}}
рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдлреАрд▓реНрдбрд▓рд╛ рдХреЛрдгрддреЗ рдореВрд▓реНрдп рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдпрд╛ рдЖрдордЪреНрдпрд╛ рдкреНрд░рд╢реНрдирд╛рдЪреЗ рдЙрддреНрддрд░ рдЖрдореНрд╣рд╛рд▓рд╛ рдорд┐рд│рд╛рд▓реЗ transient. рддреНрдпрд╛рд▓рд╛ рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдп рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рд╡рд╕реНрддреВрдВрд╕рд╛рдареА, рд╣реЗ рдЖрд╣реЗ null. рдЬреЗрд╡реНрд╣рд╛ рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдХрд╛рд╣реА рдорд┐рдирд┐рдЯреЗ рд╢рд┐рд▓реНрд▓рдХ рдЕрд╕рддреАрд▓ рддреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рдЕрдиреБрдХреНрд░рдорд╛рдВрдХрд╛рд╡рд░реАрд▓ рд╣рд╛ рдЙрддреНрдХреГрд╖реНрдЯ рд▓реЗрдЦ рд╡рд╛рдЪреВ рд╢рдХрддрд╛ . рд╣реЗ рдЗрдВрдЯрд░рдлреЗрд╕рдЪрд╛ рджреЗрдЦреАрд▓ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ Externalizable, рдЬреНрдпрд╛рдмрджреНрджрд▓ рдЖрдкрдг рдкреБрдвреАрд▓ рдзрдбреНрдпрд╛рдд рдмреЛрд▓реВ. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, "рд╣реЗрдб-рдлрд░реНрд╕реНрдЯ рдЬрд╛рд╡рд╛" рдпрд╛ рдкреБрд╕реНрддрдХрд╛рдд рдпрд╛ рд╡рд┐рд╖рдпрд╛рд╡рд░ рдПрдХ рдЕрдзреНрдпрд╛рдп рдЖрд╣реЗ. рдЬрд░рд╛ рд▓рдХреНрд╖ рджреНрдпрд╛ :)
рдЯрд┐рдкреНрдкрдгреНрдпрд╛
  • рд▓реЛрдХрдкреНрд░рд┐рдп
  • рдирд╡реАрди
  • рдЬреБрдиреЗ
рдЯрд┐рдкреНрдкрдгреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рд╕рд╛рдИрди рдЗрди рдХреЗрд▓реЗрд▓реЗ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ
рдпрд╛ рдкрд╛рдирд╛рд╡рд░ рдЕрдЬреВрди рдХреЛрдгрддреНрдпрд╛рд╣реА рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдирд╛рд╣реАрдд