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 [Παράδειγμα Deserialization]
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 152: Line 156:
 </​code>​ </​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>​
 +
 +
 +|Προηγούμενο:​ [[ :​java:​write_to_file | Γράφοντας σε αρχείο ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο:​ [[ :​java:​generics | Παραμετρικοί τύποι δεδομένων ]] |
  
  
java/object_serialization.1487338964.txt.gz · Last modified: 2017/02/17 13:42 by gthanos