Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Java - Serialisasi

Java menyediakan mekanisme yang disebut serialisasi objek di mana suatu objek dapat direpresentasikan sebagai urutan byte yang mencakup data objek serta informasi tentang tipe objek dan tipe data yang disimpan dalam objek.

Setelah objek serial telah ditulis ke dalam file, dapat dibaca dari file dan deserialized yaitu, jenis informasi dan byte yang mewakili objek dan datanya dapat digunakan untuk membuat ulang objek dalam memori.

Yang paling mengesankan adalah bahwa seluruh proses adalah JVM independen, artinya sebuah objek dapat diserialisasikan pada satu platform dan dideserialisasi pada platform yang sama sekali berbeda.

Kelas ObjectInputStream dan ObjectOutputStream adalah aliran tingkat tinggi yang berisi metode untuk membuat serialisasi dan deserialisasi objek.

Kelas ObjectOutputStream berisi banyak metode tulis untuk menulis berbagai tipe data, tetapi satu metode khususnya menonjol −

public final void writeObject(Object x) throws IOException

Metode di atas membuat serial Object dan mengirimkannya ke aliran output. Demikian pula, kelas ObjectInputStream berisi metode berikut untuk deserializing objek −

public final Object readObject() throws IOException, ClassNotFoundException

Metode ini mengambil Obyek berikutnya keluar dari aliran dan deserialize itu. Nilai yang dikembalikan adalah Object, jadi Anda harus mentransmisikannya ke tipe data yang sesuai.

Untuk mendemonstrasikan cara kerja serialisasi di Java, saya akan menggunakan kelas Karyawan yang telah kita bahas di awal buku ini. Misalkan kita memiliki kelas Karyawan berikut, yang mengimplementasikan antarmuka Serializable

Contoh

public class Employee implements java.io.Serializable {
   public String name;
   public String address;
   public transient int SSN;
   public int number;
   
   public void mailCheck() {
      System.out.println("Mailing a check to " + name + " " + address);
   }
}

Perhatikan bahwa agar kelas berhasil diserialisasi, dua kondisi harus dipenuhi

Jika Anda ingin tahu apakah Kelas Standar Java dapat dibuat serial atau tidak, periksa dokumentasi untuk kelas tersebut. Tesnya sederhana:Jika kelas mengimplementasikan java.io.Serializable, maka itu serializable; jika tidak, tidak.

Membuat Serialisasi Objek

Kelas ObjectOutputStream digunakan untuk membuat serial Object. Program SerializeDemo berikut membuat instance objek Employee dan membuat serial menjadi file.

Ketika program selesai dieksekusi, sebuah file bernama employee.ser dibuat. Program tidak menghasilkan output apa pun, tetapi mempelajari kodenya dan mencoba menentukan apa yang sedang dilakukan program.

Catatan Saat membuat serial objek ke file, konvensi standar di Java adalah memberikan file .ser ekstensi.

Contoh

import java.io.*;
public class SerializeDemo {

   public static void main(String [] args) {
      Employee e = new Employee();
      e.name = "Reyan Ali";
      e.address = "Phokka Kuan, Ambehta Peer";
      e.SSN = 11122333;
      e.number = 101;
      
      try {
         FileOutputStream fileOut =
         new FileOutputStream("/tmp/employee.ser");
         ObjectOutputStream out = new ObjectOutputStream(fileOut);
         out.writeObject(e);
         out.close();
         fileOut.close();
         System.out.printf("Serialized data is saved in /tmp/employee.ser");
      } catch (IOException i) {
         i.printStackTrace();
      }
   }
}

Deserializing Object

Program DeserializeDemo berikut melakukan deserialize objek Karyawan yang dibuat dalam program SerializeDemo. Pelajari programnya dan coba tentukan hasilnya

Contoh

import java.io.*;
public class DeserializeDemo {

   public static void main(String [] args) {
      Employee e = null;
      try {
         FileInputStream fileIn = new FileInputStream("/tmp/employee.ser");
         ObjectInputStream in = new ObjectInputStream(fileIn);
         e = (Employee) in.readObject();
         in.close();
         fileIn.close();
      } catch (IOException i) {
         i.printStackTrace();
         return;
      } catch (ClassNotFoundException c) {
         System.out.println("Employee class not found");
         c.printStackTrace();
         return;
      }
      
      System.out.println("Deserialized Employee...");
      System.out.println("Name: " + e.name);
      System.out.println("Address: " + e.address);
      System.out.println("SSN: " + e.SSN);
      System.out.println("Number: " + e.number);
   }
}

Ini akan menghasilkan hasil berikut

Keluaran

Deserialized Employee...
Name: Reyan Ali
Address:Phokka Kuan, Ambehta Peer
SSN: 0
Number:101

Berikut poin-poin penting yang perlu diperhatikan


java

  1. Kata kunci terakhir Java
  2. Instance Java dari Operator
  3. Kelas Statis Bersarang Java
  4. Kelas Anonim Java
  5. Kelas Tunggal Jawa
  6. Refleksi Jawa
  7. Kelas Java ObjectOutputStream
  8. Java Generik
  9. Kelas File Java
  10. Java - Objek dan Kelas