java:object_serialization

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
java:object_serialization [2017/02/17 13:42]
gthanos [Παράδειγμα Serialization]
java:object_serialization [2017/02/17 14:11] (current)
gthanos
Line 1: Line 1:
-====== Object Serialization ======+====== Object Serialization/​Deserialization ​======
  
 Η Java παρέχει την δυνατότητα μετατροπής ενός αντικειμένου σε μία σειρά από bytes, προκειμένου αυτό στη συνέχεια να αποθηκευτεί σε ένα μέσω μόνιμης αποθήκευσης (π.χ. αρχείο στο filesystem) ή να μεταδοθεί μέσω δικτύου προκειμένου να δημιουργηθεί ένα αντίγραφο του σε απομακρυσμένο σημείο. Η διαδικασία μετατροπής των αντικειμένων σε bytes ονομάζεται **object serialization**. Η Java παρέχει την δυνατότητα μετατροπής ενός αντικειμένου σε μία σειρά από bytes, προκειμένου αυτό στη συνέχεια να αποθηκευτεί σε ένα μέσω μόνιμης αποθήκευσης (π.χ. αρχείο στο filesystem) ή να μεταδοθεί μέσω δικτύου προκειμένου να δημιουργηθεί ένα αντίγραφο του σε απομακρυσμένο σημείο. Η διαδικασία μετατροπής των αντικειμένων σε bytes ονομάζεται **object serialization**.
Line 42: Line 42:
 Θα επιχειρήσουμε να κάνουμε serialize ένα αντικείμενο της παρακάτω κλάσης Employee. Θα επιχειρήσουμε να κάνουμε serialize ένα αντικείμενο της παρακάτω κλάσης Employee.
 <code java Employee.java>​ <code java Employee.java>​
-import ​java.util.*;​+iimport ​java.util.*;​
  
 public class Employee implements java.io.Serializable { public class Employee implements java.io.Serializable {
Line 57: Line 57:
       str+="​AMKA:​ " + AMKA+"​\n";​       str+="​AMKA:​ " + AMKA+"​\n";​
       str+="​Salary:​ " + salary+"​\n";​       str+="​Salary:​ " + salary+"​\n";​
-      str+="​Next:​ " + next.name+"​\n";​ +      ​if(next != null) 
-      Iterator<​Employee>​ it = list.iterator();​ +        ​str+="​Next:​ " + next.name+"​\n";​ 
-      if( it.hasNext() ) { +      ​ 
-        str+="​List:​ "; +      if( list != null) { 
-      +        ​Iterator<​Employee>​ it = list.iterator();​ 
-      while( it.hasNext() ) { +        if( it.hasNext() ) { 
-        str+= it.next().name+",​ ";+          str+="​List:​ "; 
 +        
 +        while( it.hasNext() ) { 
 +          str+= it.next().name+", ​"; 
 +        } 
 +        str+="​\n";
       }       }
-      str+="​\n";​ 
       return str;       return str;
    }    }
Line 140: Line 144:
          ​i.printStackTrace();​          ​i.printStackTrace();​
          ​return;​          ​return;​
-      }catch(ClassNotFoundException ​c) {+      }catch(ClassNotFoundException ​ex) {
          ​System.out.println("​Employee class not found"​);​          ​System.out.println("​Employee class not found"​);​
-         c.printStackTrace();​+         ex.printStackTrace();​
          ​return;​          ​return;​
       }       }
       ​       ​
       System.out.println(e);​       System.out.println(e);​
-      System.out.println(e1);​+      System.out.println(e1);       
 +   } 
 +
 +</​code>​ 
 + 
 +<WRAP todo 80% center round> 
 +Στο παραπάνω παράδειγμα δηλώστε τα τελευταία τρία πεδία της κλάσης Employee ως transient, oπως παρακάτω. Μεταγλωττίστε και τρέξτε ξανά τις κλάσεις **SerializeDemo** και **DeserializeDemo**. Τι παρατηρείτε;​ 
 +</​WRAP>​ 
 + 
 +<code java Employee.java>​ 
 +import java.util.*;​ 
 + 
 +public class Employee implements java.io.Serializable { 
 +   ​public String name; 
 +   ​public String address; 
 +   ​public int AMKA; 
 +   ​public transient double salary; 
 +   ​public transient Employee next; 
 +   ​public transient ArrayList<​Employee>​ list; 
 +    
 +   ​public String toString() { 
 +      String str = "Name: " + name+"​\n";​ 
 +      str+="​Address:​ " + address+"​\n";​ 
 +      str+="​AMKA:​ " + AMKA+"​\n";​ 
 +      str+="​Salary:​ " + salary+"​\n";​ 
 +      if(next != null) 
 +        str+="​Next:​ " + next.name+"​\n"​;
       ​       ​
 +      if( list != null) {
 +        Iterator<​Employee>​ it = list.iterator();​
 +        if( it.hasNext() ) {
 +          str+="​List:​ ";
 +        }
 +        while( it.hasNext() ) {
 +          str+= it.next().name+",​ ";
 +        }
 +        str+="​\n";​
 +      }
 +      return str;
    }    }
 } }
 </​code>​ </​code>​
  
 +
 +|Προηγούμενο:​ [[ :​java:​write_to_file | Γράφοντας σε αρχείο ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο:​ [[ :​java:​generics | Παραμετρικοί τύποι δεδομένων ]] |
  
  
java/object_serialization.1487338933.txt.gz · Last modified: 2017/02/17 13:42 by gthanos